实验三

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)}")
复制代码

 

截图:

 

posted @ 2022-04-26 18:31  MeiKoY  阅读(8)  评论(2编辑  收藏  举报