[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)