猜数字游戏,题目要求是:随机生成一个数字,用户输入一个数字,判断用户猜对了没有,没有就继续猜,直到猜对为止,并且把用户所猜的所有的数字打印出来,有重复的便丢去。

代码如下:

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!"

运行结果:

Guess_number.png