实验三

task1

import random
print('用列表存储随机整数: ')
ls = [random.randint(1, 100) for i in range(5)]
print(ls)
print('\n用集合存储随机整数: ')
s1 = {random.randint(1,100) for i in range(5)}
print(s1)
print('\n用集合存储随机整数: ')
s2 = set()
while(len(s2)<5):
    s2.add(random.randint(1,100))
print(s2)

问题1:整数范围是1-100,取得到100

问题2:有序序列范围是0-4,不包含5
     有序序列范围是1-4,不包含5

问题3:len(s1)不一定是5,因为randint有可能取到相等的值,所以在集合中则显示一次

问题4:一定是5

 

task2

datas = {'2049777001': ['篮球', '羽毛球', '美食', '漫画'],
         '2049777002': ['音乐', '旅行'],
         '2049777003': ['马拉松', '健身', '游戏'],
         '2049777004': [],
         '2049777005': ['足球', '阅读'],
         '2049777006': ['发呆', '闲逛'],
         '2049777007': [],
         '2049777008': ['书法', '电影'],
         '2049777009': ['音乐', '阅读', '电影', '漫画'],
         '2049777010': ['数学', '推理', '音乐', '旅行']
         }
a = [x for i in datas.values() for x in i]
counts = [(a.count(x),x) for x in set(a)]
counts.sort(reverse=True)
for i in counts:
    print(f"{i[1]}:{i[0]}")

task3

temperatures = [['2022-04-18', '星期一', '10', '22'],
                ['2022-04-19', '星期二', '10', '22'],
                ['2022-04-20', '星期三', '12', '25'],
                ['2022-04-21', '星期四', '13', '28'],
                ['2022-04-22', '星期五', '16', '31'],
                ['2022-04-23', '星期六', '19', '31'],
                ['2022-04-24', '星期日', '19', '27']]
tem_low = [int(each[2]) for each in temperatures]
tem_high =[int(each[3]) for each in temperatures]
print(f"未来一周最低气温:{min(tem_low)}℃")
print(f"未来一周最高气温:{max(tem_high)}℃")
print(f"未来一周平均气温区间:{sum(tem_low)//len(tem_low)}℃ ~ {sum(tem_high)//len(tem_high)}℃")

task4

import random
day = int(input("猜猜2022年5月哪一天会是你的lucky day:-)\n你有三次机会,猜吧(1~31):"))
lucky_day = random.randint(1,31)
for i in range(3):     # 其实这边用while应该会更好
    if i == 2:
        print("次数用光啦")
        print(f"偷偷告诉你, 5月你的lucky day是{lucky_day}号. good luck:-)")
        break
    elif day > lucky_day :
        print("猜晚啦, 你的lucky day已经过啦")
    elif day < lucky_day :
        print("猜早啦, 你的lucky day 还没到呢")
    elif day == lucky_day:
        print("哇, 猜中啦:-)")
        break
    day = int(input("再猜(1~31):"))

task5

num, n = eval(input("输入十进制整数x和要转换的进制n(2或8或16):"))
a = []
b = num//n
a.append(num%n)
while b :
    a.append(b%n)
    b = b//n

print(f"{num}的{n}进制是:", end = '')
for i in a[::-1]:
    if 10<=i<=16:
        print(chr(55+i), end = '')
    else :
        print(i, end = '')

 

posted on 2022-04-20 19:09  忆路凉心  阅读(35)  评论(3编辑  收藏  举报

导航