实验三
task1.py
1 import random 2 print('用列表存储随机整数: ') 3 ls = [random.randint(1, 100) for i in range(5)] 4 print(ls) 5 print('\n用集合存储随机整数: ') 6 s1 = {random.randint(1,100) for i in range(5)} 7 print(s1) 8 print('\n用集合存储随机整数: ') 9 s2 = set() 10 while(len(s2)<5): 11 s2.add(random.randint(1,100)) 12 print(s2)
截图:
问题1:整数范围是1-100,取得到100
问题2:有序序列范围是0-4,不包含5
有序序列范围是1-4,不包含5
问题3:len(s1)不一定是5,因为randint有可能取到相等的值,所以在集合中则显示一次
问题4:一定是5
task2.py
1 datas = {'2049777001': ['篮球', '羽毛球', '美食', '漫画'], 2 '2049777002': ['音乐', '旅行'], 3 '2049777003': ['马拉松', '健身', '游戏'], 4 '2049777004': [], 5 '2049777005': ['足球', '阅读'], 6 '2049777006': ['发呆', '闲逛'], 7 '2049777007': [], 8 '2049777008': ['书法', '电影'], 9 '2049777009': ['音乐', '阅读', '电影', '漫画'], 10 '2049777010': ['数学', '推理', '音乐', '旅行'] 11 } 12 fav = [x for i in datas.values() for x in i] 13 counts = [(fav.count(x),x) for x in set(fav)] 14 counts.sort(reverse=True) 15 for i in counts: 16 print(f"{i[1]}:{i[0]}")
截图:
task3.py
1 temperatures = [['2022-04-18', '星期一', '10', '22'], 2 ['2022-04-19', '星期二', '10', '22'], 3 ['2022-04-20', '星期三', '12', '25'], 4 ['2022-04-21', '星期四', '13', '28'], 5 ['2022-04-22', '星期五', '16', '31'], 6 ['2022-04-23', '星期六', '19', '31'], 7 ['2022-04-24', '星期日', '19', '27']] 8 tem_low = [int(each[2]) for each in temperatures] 9 tem_high =[int(each[3]) for each in temperatures] 10 print(f"未来一周最低气温:{min(tem_low)}℃") 11 print(f"未来一周最高气温:{max(tem_high)}℃") 12 print(f"未来一周平均气温区间:{sum(tem_low)//len(tem_low)}℃ ~ {sum(tem_high)//len(tem_high)}℃")
截图:
task4.py
1 import random 2 day = int(input("猜猜2022年5月哪一天会是你的lucky day:-)\n你有三次机会,猜吧(1~31):")) 3 lucky_day = random.randint(1,31) 4 for i in range(3): # 其实这边用while应该会更好 5 if i == 2: 6 print("次数用光啦") 7 print(f"偷偷告诉你, 5月你的lucky day是{lucky_day}号. good luck:-)") 8 break 9 elif day > lucky_day : 10 print("猜晚啦, 你的lucky day已经过啦") 11 elif day < lucky_day : 12 print("猜早啦, 你的lucky day 还没到呢") 13 elif day == lucky_day: 14 print("哇, 猜中啦:-)") 15 break 16 day = int(input("再猜(1~31):"))
截图:
task5.py
1 num, n = eval(input("输入十进制整数x和要转换的进制n(2或8或16):")) 2 a = [] 3 zuo = num//n 4 a.append(num%n) 5 while zuo : 6 a.append(zuo%n) # 余数放进去 7 zuo = zuo//n # 新的被除数 8 9 print(f"{num}的{n}进制是:", end = '') 10 for i in a[::-1]: 11 if 10<=i<=16: 12 print(chr(55+i), end = '') 13 else : 14 print(i, end = '') 15 16 print() 17 18 # 同样的,也可以这么对其进行输出。代码相对简洁。 19 new = [str(chr(55+i)) if i not in range(10) else str(i) for i in a[::-1]] 20 print(f"{num}的{n}进制是:{''.join(new)}")
截图: