python秃头之路 综合练习

    xiaoxiao2022-07-07  202

    1

    给定一个list a, 满足a[i+1] >= a[i], 给定int key ,找出list a 中第一个大于等于key的元素的index,无满足要求的元素则返回-1。

    a = [1,2,3,4,5,6,7,8,9] def aa (): """ Function doc """ try: key=int(input('请输入key:')) for i in a: if i>=key: print('下标:',a.index(i)) return print('没有满足要求的元素') return -1 except: print('请输入数字') while 1: aa()

    2

    求结果v = dict.fromkeys([‘k1’,‘k2’],[])v[‘k1’].append(666)print(v)v[‘k1’] = 777print(v)

    v=dict.fromkeys(['k1','k2'],[]) v['k1'].append(666) v['k1'].append(666) print(v) v['k1'] = 777 print(v)

    3

    按照一下要求定义一个游乐园门票类,并尝试计算2个成人+1个小孩子平日票价 1.平日票价100元 2.周末票价为平日票价120% 3.儿童半价

    class Ticket: """ 门票类 """ def __init__ (self,w_whether,adult_whether): """ 初始化游客对象 """ self.w_whether=w_whether self.adult_whether=adult_whether def price (self): """ 价格方法 """ price_f=100 if self.w_whether==1:#周末票价 if self.adult_whether==1:#成人票价 return 1.2*price_f else: return 0.6*price_f else:#非周末票价 if self.adult_whether==1: return price_f else: return 0.5*price_f if __name__=='__main__': a1=Ticket(0,1) a2=Ticket(0,1) a3=Ticket(0,0) print(a1.price()+a2.price()+a3.price())

    4

    从开发的代码库中得到一组数据,表示每个文件的代码变更情况 {‘login.py’: ‘a 8 d 2 u 3’, ‘order.py’: ‘a 15 d 0 u 34’, ‘info.py’: ‘a 1 d 20 u 5’} 其中 a表示新增行数,d表示删除行数,u表示修改行数。login.py的变更行数为13

    def aa (key): d={'login.py': 'a 8 d 2 u 3', 'order.py': 'a 15 d 0 u 34', 'info.py': 'a 1 d 20 u 5'} """ 对相应键的值进行操作 """ login=d[key].split(' ')#分割字符串 x=0 for i in login: if i.isdigit():#找到列表中数字 x+=int(i) print(x) aa('order.py')

    5

    定义一个函数func(listinfo) listinfo:为列表,listinfo = [133, 88, 24, 33, 232, 44, 11, 44],返回列表小于100,且为偶数的数

    listinfo = [133, 88, 24, 33, 232, 44, 11, 44] def func (listinfo): """ Function doc """ list_t=[] for i in listinfo:#遍历列表 if i<100 and i%2==0:#找出小于100的偶数 list_t.append(i) return list_t print(func(listinfo))

    6

    自己定义一个异常类,继承Exception类, 捕获下面的过程:判断raw_input()输入的字符串长度是否小于5, 如果小于5,比如输入长度为3则出:" The input is of length 3,expecting at least 5’,大于5输出"print success’

    class MyException(Exception): """ Class doc """ def __init__ (self,str_input): """ Class initialiser """ super().__init__() self.str_input=str_input def __str__(self): if len(self.str_input)<5: return 'The input is of length 3,expecting at least 5' else: return 'print sucess' try: raise MyException('aaaa') except MyException as e: print(e)

    7

    完美立方:找到大于1的4个整数满足完美立方等式:a3=b3+c3+d3(例如123=63+83+103)。编写一个程序,对于任意给定的正整数N(N ≤100),寻找所有的四元组(a,b,c,d),满足a3=b3+c3+d3,其中1<a,b,c,d≤N。

    while 1: N=input('请输入一个大于1且不大于100的数字:') try: N=int(N) N_list=set() if 1<N<=100: for i in range(2,100): for j in range(2,100): for k in range(2,100): for l in range if i**3==j**3+k**3+l**3: N_list.add((i,j,k,l)) for a in N_list: print(a) else: print('请输入有效数字') except: print('请输入有效数字')

    8

    恺撒密码:凯撒密码是古罗马凯撒大帝用来对军事情报进行加解密的算法,它采用了替换方法对信息中的每一个英文字符循环替换为字母表序列中该字符后面的第三个字符,即,字母表的对应关系如下:

    s=input('Please input the sentence:') s=s.split(' ')#将字符串按照空格拆为列表 for i in range(len(s)):#将每个单词拆分为列表 s[i]=list(s[i]) for i in range(len(s)):#遍历语句列表中的下标 for j in range(len(s[i])):#遍历每个单词的下标 if s[i][j].islower():#小写字母加密 #按照26个字母循环计算字母加密后ASCII,并按照下标修改改变后的值 n=(ord(s[i][j])-ord('a')+3)& s[i][j]=chr(n+ord('a')) elif s[i][j].isupper():#大写字母加密 n=(ord(s[i][j])-ord('A')+3)& s[i][j]=chr(n+ord('A')) for i in range(len(s)):#将每个单词的列表重新合成字符串 s[i]=''.join(s[i]) s=' '.join(s)#将整个语句列表重新合成字符串 print(s) s=s.split(' ')#将字符串按照空格拆为列表 for i in range(len(s)):#将每个单词拆分为列表 s[i]=list(s[i]) for i in range(len(s)):#遍历语句列表中的下标 for j in range(len(s[i])):#遍历每个单词的下标 if s[i][j].islower():#小写字母加密 #按照26个字母循环计算字母加密后ASCII n=(ord(s[i][j])-ord('a')-3)& s[i][j]=chr(n+ord('a')) elif s[i][j].isupper():#大写字母加密 n=(ord(s[i][j])-ord('A')-3)& s[i][j]=chr(n+ord('A')) for i in range(len(s)):#将每个单词的列表重新合成字符串 s[i]=''.join(s[i]) s=' '.join(s)#将整个语句列表重新合成字符串 print(s)

    9

    3位水仙花数计算:“3位水仙花数”是指一个三位整数,其各位数字的3次方和等于该数本身。例如:ABC是一个“3位水仙花数”,则:A的3次方+B的3次方+C的3次方 = ABC。 请按照从小到大的顺序输出所有的3位水仙花数,请用一个“逗号+空格”分隔输出结果。

    s_list=[] for A in range(1,10): for B in range(0,10): for C in range(0,10): if A**3+B**3+C**3==100*A+10*B+C: s_list.append(100*A+10*B+C) n=0 for i in s_list: n+=1 if n == len(s_list): print(i) else: print(i,end=', ')

    10

    给定两个非负整数x和y,如果某一整数等于xi+yj,其中整数i>= 0且j>=0,那么我们认为该整数是一个"精致"的数。返回值小于或等于n(n<=200)的所有精致的数组成的列表。结果列表中每个值最多出现一次,同时请使用sorted保证结果唯一。 输入格式:共三行,每一行为一个整数,分别是x y n 输出格式:共一行,为一个列表。 输入样例: 1 2 5 输出样例:[2, 3, 5]

    flag=1 while flag:#输入循环,直到输入有效数字为止 #输入x,y,z x=input('请输入x的值:') y=input('请输入y的值:') n=input('请输入n的值:') if x.isdigit() and y.isdigit() and n.isdigit(): #判断字符串中数字是否整型数字 x=int(x)#字符串转换为整型 y=int(y) n=int(n) if n<=200:#判断n是否符合要求 flag=0#跳出输入循环 else:#输入不符合要求 print('请输入有效数字') else:#输入不符合要求 print('请输入有效数字') z_list=[]#精致数字预存列表 i=0#初始化i j=-1#初始化j flagj=1#j循环标记 while flagj:#j加1的循环 flagi=1#i循环标记 j+=1 while flagi:#i加1的循环 z=x**i+y**j#计算精致数 if z<=n:#判断精致数是否符合要求 z_list.append(z)#将精致数加入列表 else:#精致数不符合要求操作 flagi=0#跳出i循环 i+=1 if z==x**i+y**j:#判断i+1后精致数是否有变化 flagi=0#跳出i循环 if y**j+1>=n:#判断此时j是否达到极限值 flagj=0#跳出j循环 print(z_list)#输出列表
    最新回复(0)