实验3 控制语句与组合数据类型应用编程

Posted on 2022-04-21 16:06  灯下白头人  阅读(29)  评论(2编辑  收藏  举报

实验内容

实验任务1

 1 def task1():
 2     import random
 3 
 4     print('用列表存储随机整数: ')
 5     ls = [random.randint(1, 100) for i in range(5)]
 6     print(ls)
 7 
 8     print('\n用集合存储随机整数: ')
 9     s1 = {random.randint(1,100) for i in range(5)}
10     print(s1)
11 
12     print('\n用集合存储随机整数: ')
13     s2 = set()
14     while(len(s2)<5):
15         s2.add(random.randint(1,100))
16     print(s2)

Q:

问题1: random.randint(1,100) 生成的随机整数范围是?能否取到100?

A:[1,100]内的整数。能取到100。

问题2:利用 list(range(5)) 生成的有序序列范围是?是否包括5? 利用 list(range(1,5)) 生成的有序序列范围是?是否包括5?

A:[0,1,2,3,4].不包括5.

    [1,2,3,4].不包括5.

问题3:使用line8生成的集合s1,len(s1)一定是5吗?

A:不一定。

 

问题4:使用line12-14生成的集合s2,len(s2)一定是5吗?

A:一定。

实验任务2

 1 def task2():
 2     datas = {
 3              '2049777001': ['篮球', '羽毛球', '美食', '漫画'],
 4              '2049777002': ['音乐', '旅行'],
 5              '2049777003': ['马拉松', '健身', '游戏'],
 6              '2049777004': [],
 7              '2049777005': ['足球', '阅读'],
 8              '2049777006': ['发呆', '闲逛'],
 9              '2049777007': [],
10              '2049777008': ['书法', '电影'],
11              '2049777009': ['音乐', '阅读', '电影', '漫画'],
12              '2049777010': ['数学', '推理', '音乐', '旅行']
13                  }
14     hobbys={}
15     for users in datas.values():
16         for hobby in users:
17             if hobbys.get(hobby):
18                 hobbys[hobby]+=1
19             else:
20                 hobbys.setdefault(hobby,1)
21     hobbys_list=[(x,y) for x,y in hobbys.items()]
22     for i in range(len(hobbys_list)):
23         for j in range(i,len(hobbys_list)):
24             if hobbys_list[i][1]<hobbys_list[j][1]:
25                 hobbys_list[i],hobbys_list[j]=hobbys_list[j],hobbys_list[i]
26     for i in hobbys_list:
27         print("%s:%s"%(i[0],i[1]))

实验任务3

 1 def task3():
 2     temperatures= [['2022-04-18', '星期一', '10', '22'],
 3                    ['2022-04-19', '星期二', '10', '22'],
 4                    ['2022-04-20', '星期三', '12', '25'],
 5                    ['2022-04-21', '星期四', '13', '28'],
 6                    ['2022-04-22', '星期五', '16', '31'],
 7                    ['2022-04-23', '星期六', '19', '31'],
 8                    ['2022-04-24', '星期日', '19', '27']
 9                                ]
10     min_t=eval(temperatures[0][2]);max_t=eval(temperatures[0][3])
11     for i in range(len(temperatures)):
12         if min_t>=eval(temperatures[i][2]):
13             min_t=eval(temperatures[i][2])
14         if max_t<=eval(temperatures[i][3]):
15             max_t=eval(temperatures[i][3])
16     summin=[eval(temperatures[i][2]) for i in range(len(temperatures))]
17     summax=[eval(temperatures[i][3]) for i in range(len(temperatures))]
18     avemin=sum(summin)/len(summin)
19     avemax=sum(summax)/len(summax)
20     print("Minimun temperature for the coming week:%d°C"%(min_t))
21     print("Maximun temperature for the coming week:%d°C"%(max_t))
22     print("Average temperature range for the coming week:%d°C~%d°C"%(avemin,avemax))

实验任务4

 1 def task4():
 2     import random
 3     luckyday=random.randint(1,31)
 4     print("You have 3 chances to guess which day is your lucky day:-)")
 5     for i in range(1,4):
 6         if i==1:
 7             num=eval(input("Just guess(1~31):"))
 8         elif i in range(2,4):
 9             num=eval(input("And guess again:"))
10         if num not in range(1,32):
11             raise ValueError
12         else:
13             if num==luckyday:
14                 print("Wow!You get it!");break
15             elif num>=luckyday:
16                 print("Too late, boy. Your lucky day has passed.")
17             elif num<=luckyday:
18                 print("Too early, boy. Your lucky day hasn't arrived yet.")
19     else:
20         if i==3:
21              print("Your chance is over.\nBetween you and me, your lucky day in May is %d.Good luck!"%(luckyday))

实验任务5

def task5():
    n=input("Enter a decimal integer and the system you need(Binary,Octal or Hexadecimal):")
    num,sys=n.split(",");num=eval(num);sys=eval(sys)
    if not(type(num)==int and (sys in (2,8,16))):
        raise ValueError
    else:
        nums=[];num1=num
        while(num1!=0):
            nums.insert(0,num1%sys)
            num1=num1//sys
        if (sys==16):
            for i in range(len(nums)):
                if (nums[i] == 10):
                    nums[i]="A"
                elif(nums[i]==11):
                    nums[i]="B"
                elif(nums[i]==12):
                    nums[i]="C"
                elif(nums[i]==13):
                    nums[i]="D"
                elif(nums[i]==14):
                    nums[i]="E"
                elif(nums[i]==15):
                    nums[i]="F"
        print("%d in %d system is:"%(num,sys),end="")
        for j in nums:
            print(j,end="")