猜数字游戏,题目要求是:随机生成一个数字,用户输入一个数字,判断用户猜对了没有,没有就继续猜,直到猜对为止,并且把用户所猜的所有的数字打印出来,有重复的便丢去。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
| from random import randint generate_list = [] # 用来放用户所输入的所有数 reset_repeat = {} # 用来放删除的重复的数 compute_total = {} # 用来放重复的数 get_list = [] # 获取所有重复的数的个数 cishu = 0 one_num = randint(1,20) # 生产随机数字 print("请输入不大于20,不小于0的整数") while True: cishu+=1 user_input = input(">>>") # 用户输入 reset_repeat[user_input]=1 generate_list.append(user_input) # 将用户所输入的数字放在 `generate_list` 中 s = generate_list.count(user_input) # 获得重复数字的个数 compute_total[user_input]=s # 获得重复数字的次数放入 `compute_toatl` reset_list = [i for i in generate_list if generate_list.count(i) > 1] # 去掉重复一次以下的 get_num = set(reset_list) # 利用set去掉重复的数字 reset_list_2 = [i for i in generate_list if generate_list.count(i)] L = {} len_size = len(set(reset_list_2)) for i in get_num: # 遍历get_num,将里面的数添加到 `get_list` f = compute_total.get(i) get_list.append(f) L[i]=get_list[-1] # 得到所有数的一次 if user_input.isnumeric(): user_input = int(user_input) if user_input > 20 or user_input < 0: raise "must 0`20!" if user_input > one_num: if isinstance(user_input,int): print("您猜的是 '%s' 太大了!" % (user_input)) elif user_input == one_num: if isinstance(user_input,int): print("恭喜您!猜对了!") print("共猜测了'%s'次,此次您输入的数字都有:%s,重复的有: %s,全部重复的只能算一次,所以最后只输入了: %s 所以您只猜了%s次" % (cishu,generate_list,L,sorted(set(reset_list_2)),len_size)) break elif user_input < one_num: if isinstance(user_input,int): print("您猜的是 '%s' 太小啦!" % (user_input)) else: raise "must be a intget!"
|
运行结果: