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:用户选择后,代码需要判断正误,立即给出正确或错误,并给出正确答案

扫描二维码关注公众号,回复: 3700112 查看本文章

功能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()

猜你喜欢

转载自blog.csdn.net/qq_35328369/article/details/81508143