作业
''' . 尝试实现一个管理系统 =======通讯录管理系统======= 1.增加姓名和手机 2.删除姓名 3.修改手机 4.查询所有用户 5.根据姓名查找手机号 6.退出 ''' d = {} print('=======通讯录管理系统=======') print('1.增加姓名和手机') print('2.删除姓名') print('3.修改手机') print('4.查询所有用户') print('5.根据姓名查找手机号') print('6.退出') while True: c = int(input('请选择要执行的选项:')) if c == 1: name = input('请输入你的姓名:') d[name] = input('请输入你的手机:') #print(d) if c == 2: name1 = input('请输入要删除的姓名:') d.pop(name1) print('已删除') if c == 3: name=input('请输入要修改手机号的姓名:') num = input('请输入新的手机号:') d[name] = num print(d[name]) if c == 4: for i in d.keys(): print(i) if c == 5: name3 = input('请输入要查找的姓名:') print(d[name3]) if c == 6: print('退出') break ''' 随机产生密码: 在26个大小写字母和10个数字组成的列表中,随机生成10个8位密码 ''' import random l = [] num = [] word = [] for i in range(0,10): num.append(i) for j in range(65,91): word.append(chr(j)) for h in range (97,123): word.append(chr(h)) l = num + word print (l) for i in range(10): m = random.sample(l,8) print(m) 1.通过代码实现如下转换: ? 二进制转换成十进制:v = “0b1111011” ? 十进制转换成二进制:v = 18 ? 八进制转换成十进制:v = “011” ? 十进制转换成八进制:v = 30 ? 十六进制转换成十进制:v = “0x12” ? 十进制转换成十六进制:v = 87 ''' v =0b1111011 print(int(v)) v = 18 print(bin(v)) v = '011' print(int(v)) v = 30 print(oct(int(v))) v = 0x12 print(int(v)) v = 87 print(hex(int(v))) ''' v1 = 1 or 3 v2 = 1 and 3 v3 = 0 and 2 and 1 v4 = 0 and 2 or 1 v5 = 0 and 2 or 1 or 4 v6 = 0 or Flase and 1 ''' v1 = 1 v2 = 3 v3 = 0 v4 = 1 v5 = 1 v6 = Flase ''' 7求结果: a. [ i % 2 for i in range(10) ] b. ( i % 2 for i in range(10) ) ''' a = [i % 2 for i in range(10)]#[0, 1, 0, 1, 0, 1, 0, 1, 0, 1] print(a) b = (i % 2 for i in range(10))#<generator object <genexpr> at 0x0000018E9F637B48> print(b) ''' 8.求结果: a. 1 or 2 b. 1 and 2 c. 1 < (2==2) d. 1 < 2 == 2 ''' a = 1 b = 2 c = Flase d = Flase ''' 1.请写出与 10 < cost < 50 等价的表达式 ''' 10 < cost and cost < 50 2.Python3 中,一行可以书写多个语句吗? 可以,用空格隔开 Python3 中,一个语句可以分成多行书写吗? 可以 用\换行 ''' 我们人类思维是习惯于“四舍五入”法,你有什么办法使得 int() 按照“四舍五入”的方 式取整吗? 可以 ''' s = eval(input('输入一个小数:')) a = int(s + 0.5) print(a) .请用最快速度说出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or7 and 8 and 9 4 ''' 5.爱因斯坦曾出过这样一道有趣的数学题:有一个长阶梯,若每步上2阶, 最后剩1阶;若每步上3阶,最后剩2阶; 若每步上5阶,最后剩4阶;若每步上6阶,最后剩5阶;只有每步上7阶, 最后刚好一阶也不剩。请编程求解该阶梯至少有多少阶? ''' l = [] for i in range(500): if i % 2 ==1 and i % 3 == 2 and i % 5 ==4 and i % 6 == 5 and i % 7 == 0: l.append(i) print('该楼梯至少有{}阶'.format(min(l))) ''' 6.假设有 x = 1,y = 2,z = 3,请问如何快速将三个变量的值互相交换? ''' x = 1 y = 2 z = 3 x,y,z = z, x, y print(x,y,z) 7.目测以下程序会打印什么? while True: while True: break print(1) print(2) break else: print(3) 输出 2 ''' 8.member.append(['竹林小溪', 'Crazy迷恋']) 和member.extend(['竹林小溪', 'Crazy迷恋']) 实现的效果一样吗? ''' member = [] member.append(['竹林小溪','Crazy迷恋']) print(member) member.extend(['竹林小溪','Crazy迷恋']) print(member) # 效果不一样 ,append 是加入了一个元组,extend是加入了两个元素。 ''' 9.请问如何将下边这个列表的'小笨蛋'修改为'小坏蛋'? list1 = [1, [1, 2,['小笨蛋']],3, 5, 8, 13, 18] ''' list1 = [1,[1,2,['小笨蛋']],3,5,8,13,18] list1[1][2]='小坏蛋' print(list1) ''' 10.要对一个列表进行顺序排序,请问使用什么方法? ''' l = [8,9,7,5,6] l.sort() print(l) ''' .要对一个列表进行逆序排序,请问使用什么方法? ''' l = [1,2,3,4,5,6] l.reverse() print(l) 12.什么情况下你需要使用元组而不是列表? 当元组和列表掉下水,你会救谁? 当需要对内容做增删改查的时候使用列表。当内容不需要做改变的时候用元组。 当元组和列表掉下水时,选择救列表,因为列表可以做增删改查,可以对其中的内容进行操作,有一定灵活性而元组则是不可更改的,更具稳定性。 13.x, y, z = 1, 2, 3 请问x, y, z是元组吗 不是 元组的创建形式: Tup1 = (’sss’,’aaa’) Tup2 = (1,2,3) Tup3 =’a’,’b’,’c’ 所有多对象的,逗号分隔的,没有明确用符号定义的这些集合默认的类型是元组 ''' 14.编写一个进制转换程序(提示,十进制转换二进制可以用bin()这个BIF): ''' print('进制转换程序') print('1.十进制转换为二进制') print('2.十进制转换为八进制') print('3.十进制转换为十六进制') print('4.二进制转换为八进制') print('5.二进制转换为十进制') print('6.二进制转换为十六进制') print('7.八进制转换为二进制') print('8.八进制转换为十进制') print('9.八进制转换为十六进制') print('10.十六进制转换为二进制') print('11.十六进制转换为八进制') print('12.十六进制转换为十进制') while True: a = input('请输入数值:') c = int(input('请选择转换方式:')) if c == 1: print(bin(int(a))) if c == 2: print(oct(int(a))) if c == 3: print(hex(int(a,))) if c == 4: print(oct(int(a,2))) if c == 5: print(int(a,2)) if c == 6: print(hex(int(a,2))) if c == 7: print(bin(int(a,8))) if c == 8: print(int(a,8)) if c == 9: print(hex(int(a,8))) if c == 10: print(bin(int(a,16))) if c == 11: print(oct(int(a,16))) if c == 12: print(int(a,16)) break 15.我们根据列表、元祖和字符串的共同特点,把它们三统称为什么?有什么共性 统称为序列 1.都可以通过索引得到每一个元素 2.默认索引值从0开始(可以负数索引) 3.可以通过切片得到一个范围内的元素集合 可以进行(in not in 相加 相乘一个整型数 求索引值 求len max min 统计出现次数 .count) ''' 19.盒子里有3个红球,3个蓝色球,4个黄球,现刘柱要从盒子里拿出8个球, 问有多少种情况 ''' n = 0 for i in range(1,4): for j in range(1,4): for h in range(1,5): if i + j + h == 8: n +=1 print('红球取{}个,蓝球取{}个,黄球取{}个,'.format(i,j,h)) print('共有%d种情况'%n) ''' 20.打印9 9乘法表 ''' for i in range(1,10): for j in range(1,i+1): print('{} * {} = {}'.format(j,i,i * j),end = ' ') print() ''' 21.猴子得到一堆桃,当天吃了一半之后,又多吃了1个。 以后每天,猴子都吃了剩余的一半桃子之后,又多吃一个。 在第10天,只剩下1个桃子。输出这堆桃最初有多少个 ''' s = 1 for i in range (9): s = (s + 1) * 2 print(s)