[python] 练习之猜数字

 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)

 

posted @ 2018-03-19 01:00  自由天空远走高飞  阅读(368)  评论(0编辑  收藏  举报