1 # 程序功能:猜数字
2 '''
3 说明:可选择3个模式,并可设置猜测次数
4 模式a:随机生成模式
5 模式b:手动设置模式
6 模式q:退出
7 '''
8 import random
9
10 # 选择模式
11 def mode_choose():
12 while(True):
13 print('-'*40)
14 print('选择模式'.center(40,' '))
15 print('''a:随机生成模式\nb:手动设置模式\nq:退出游戏'''.ljust(40,' '))
16 print('-'*40)
17 mode = input()
18 if mode == 'a' or mode == 'b' or mode == 'q':
19 break
20 else:
21 continue
22 return mode
23
24 # 模式处理
25 def mode_run(mode):
26 if mode == 'a':
27 mode_1()
28 elif mode == 'b':
29 mode_2()
30 else:
31 mode_3()
32
33 # 参数设置
34 def setting():
35 while(True):
36 try:
37 if mode == 'a':
38 min_limit = int(input('输入下限值: '))
39 max_limit = int(input('输入上限值: '))
40 if max_limit <= min_limit:
41 print('上限值必须大于下限值')
42 continue
43 elif mode == 'b':
44 right_number = int(input('输入正确值: '))
45 time_limit = int(input('输入次数: '))
46 break
47 except:
48 print('无效的输入,请输入数字\n')
49 continue
50 if mode == 'a':
51 return (min_limit,max_limit,time_limit)
52 elif mode == 'b':
53 return (right_number,time_limit)
54
55 # 猜数字功能
56 def guess(right_number,time_limit):
57 for i in range(1,time_limit + 1):
58 try:
59 guess_number = int(input('输入第%d次猜的数:'%i))
60 except:
61 print('无效的输入,请输入数字')
62 continue
63 if right_number > guess_number:
64 print('第%d次猜小了'%i)
65 elif right_number < guess_number:
66 print('第%d次猜大了'%i)
67 else:
68 break
69 if right_number == guess_number:
70 print('恭喜您,第%d次猜对了\n'%i)
71 else:
72 print('对不起您在%d次内没能猜对,正确数字是%d\n'%(time_limit,right_number))
73
74 # 随机生成模式
75 def mode_1():
76 min_limit,max_limit,time_limit = setting()
77 right_number = random.randint(min_limit,max_limit)
78 guess(right_number,time_limit)
79
80 # 手动设置模式
81 def mode_2():
82 right_number,time_limit = setting()
83 guess(right_number,time_limit)
84
85 # 退出游戏
86 def mode_3():
87 exit()
88
89 # 主函数
90 while(True):
91 mode = mode_choose()
92 mode_run(mode)