Python練習 基礎--進階

1.題目:有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?

string=''
count=0
for i in range(1,5):
    for k in range(1,5):
        for j  in range(1,5):
            for m in range(1,5):
                string=(str(i)+str(k)+str(j)+str(m))
                count+=1
                print('第{0}個爲{1}'.format(count,string))

2.已知一個列表[['A','1'],['B','2'], ['C','3'], ['A','4'], ['B','5'], ['C','6'], ['A','1'], ['B','1'],['D','3'],['C','1']],分別將這裏面的A所對應的數都相加,B所對應的數相加,C所對應的數相加。能力好的請不要去自己去數列表中有哪些字母,要認爲這裏面的A,B,C是隨機的 有可能下回說不定就是G,H,I了。

def num_add(l):
    list1=[]
    list2=[]
    for i in range(len(l)-1):
        for j in range(i+1,len(l)):
            if l[i][0]==l[j][0]:
                l[i][1]=int(l[i][1])+int(l[j][1]) #將第數字加到第一次出現該字母的位置
    for m in l:          #第一次出現該字母時,添加該列表元素到新列表中
        if m[0] in list1:
            continue
        else:
            list1.append(m[0])
            list2.append(m)
    return list2
if __name__=='__main__':
    l=[['A','1'],['B','2'], ['C','3'], ['A','4'], ['B','5'], ['C','6'], ['A','1'], ['B','1'], ['D','3'],['C','1']]
    print(num_add(l))

3.假如你要爲一個應用搞限時促銷,生成激活碼(或者優惠券),請用 Python 如何生成 200 個激活碼(或者優惠券)。激活碼的格式爲asqE-9xRK-lqWU-QkMT

要求1:使用隨機生成時,生成數字概率爲1/5,大寫字母和小寫字母概率各爲2/5

要求2:200個激活碼,他們各不相同

import random
#生成四位隨機驗證碼
def creat_key(times):
    list1=[]
    list2=[]
    for i in range(times):
        string=''
        for i in range(26):
            key=chr(65+i)
            list1.extend([key,key.lower()])
        for i in range(13):
            num=random.randint(0,9)
            list1.append(str(num))
        random.shuffle(list1) #打亂下順序,更隨機
        for j in range(4):
            string=string+''.join(random.sample(list1,4))
            if j!=3:
                string=string+'-'
        list2.append(string)
    return list2
if __name__='__main__':
    print(creat_key(200))

4.文件中有高中英語單詞詞彙,需要使用文件操作,將文件內容讀取出來,放入一個你認爲

不錯的數據類型中。

程序功能1:讓用戶輸入需要考查單詞的數量(數量必須20個以及上)

功能2:隨機出一個單詞,給出ABCD 4個漢語意思,一個正確的,三個錯誤的

功能3:用戶輸入ABCD進行選擇相應選項

功能4:用戶選擇後,代碼需要判斷正誤,立即給出正確或錯誤,並給出正確答案

功能5:單詞數量測試完畢後,按這種格式輸出:測試數量:100 正確:70 錯誤:30 正確率:70%

功能6:提示用戶是否需要查看選錯的單詞,是->列出錯誤的單詞,否->退出程序

import xlrd
import random
#讀取sheet頁裏面的內容,返回單詞、釋義爲鍵值對的字典
def read(bookname,sheetname):
    #打開Excel文件
    wb=xlrd.open_workbook(bookname)
    #根據sheet名實例化sheet頁
    sheet=wb.sheet_by_name(sheetname)
    for rownum in range(1,sheet.nrows):#第一行爲標頭,第一列爲編號
        list1.append(sheet.cell(rownum,1).value)#sheet.cell(行,列).value確定行列對象
        list2.append(sheet.cell(rownum,3).value)#sheet頁,行列下標從0 開始
        dic[sheet.cell(rownum,1).value]=sheet.cell(rownum,3).value
    return dic
if __name__=='__main__':
    bookname='words.xls'
    sheetname='結果'
    words=read(bookname,sheetname)
    right=0
    wrong=0
    list1=[]
    list2=[]
    list3=[]
    dic={}
    wrong_word=[]
    num=int(input('輸入要考查單詞的數量:'))
    for i in range(num):
        word=random.choice(list1)
        list3.extend(random.sample(list2,3))
        list3.append(dic[word])
        random.shuffle(list3)#打亂順序
        print('單詞爲:{0}'.format(word))
        print('A.{0}  B.{1}  C.{2}  D.{3}'.format(list3[0],list3[1],list3[2],list3[3]))
        user_word=input('請選擇:')
        if user_word=='A': 
            if list3[0]==dic[word]:
                print('正確')
                right+=1
            else:
                print('錯誤')
                wrong_word.append(word)
                print('正確答案爲:{0}'.format(dic[word]))
                wrong+=1
        elif user_word=='B':
            if list3[1]==dic[word]:
                print('正確')
                right+=1
            else:
                print('錯誤')
                wrong_word.append(word)
                print('正確答案爲{0}'.format(dic[word]))
                wrong+=1
        elif user_word=='C':
            if list3[2]==dic[word]:
                print('正確')
                right+=1
            else:
                print('錯誤')
                wrong_word.append(word)
                print('正確答案爲{0}'.format(dic[word]))
                wrong+=1
        elif user_word=='D':
            if list3[3]==dic[word]:
                print('正確')
                right+=1
            else:
                print('錯誤')
                wrong_word.append(word)
                print('正確答案爲{0}'.format(dic[word]))
                wrong+=1     
    print('正確數:{0}個,錯誤數:{1}個,正確率爲{2}%'.format(right,wrong,right/num*100))
    tip=input('是否需要查看選錯的單詞:')
    if tip=='是':
        for i in wrong_word:
            print(i,dic[i])
    else:
        exit()

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章