一 猜年龄游戏
1.给定年龄,用户可以猜三次年龄
2.年龄猜对,让用户选择两次奖励
3.用户选择两次奖励后可以退出
- 单流程
age = 24 # 答案 good_list = {0: '布娃娃', 1: '变形金刚', 2: '奥特曼', 3: '<Python从入门到放弃>'} # 判断年龄循环控制3次 count = 0 while count < 3: age_inp = input('请输入你的年龄>>>') # 1. 判断输入的是否为数字 if not age_inp.isdigit() : print('请输入数字') continue age_int = int(age_inp) # 转换为整形 # 2.判断年龄 if age_int > age: print('你猜大了') elif age_int < age: print('你猜小了') else: print('恭喜你猜对了') while count1 <2: # 1.控制礼物选择两次 print(good_list) choice = input(f'请输入你想要的奖品,如果不想要,则输入"n"退出!!!{count}') # 2. 判断是否为n(不想要礼物) if choice == 'n': break # 3 .判断输入是否是数字 if not choice.isdigit(): print('\n请输入正确的选择') continue # 如果不是,跳过,重复输入 # 4. 输入正确时送出礼物 choice = int(choice)
- 双模块
age = 24 # 答案 good_list = {0: '布娃娃', 1: '变形金刚', 2: '奥特曼', 3: '<Python从入门到放弃>'} count1 = 0 # 1. 判断年龄循环控制3次 count = 0 while count < 3: age_inp = input('请输入你的年龄>>>') # 1. 判断输入的是否为数字 if not age_inp.isdigit() : print('请输入数字') continue age_int = int(age_inp) # 转换为整形 # 2.判断年龄 if age_int > age: print('你猜大了') elif age_int < age: print('你猜小了') else: print('恭喜你猜对了') break count += 1 #次数加1 # 3. 猜测3次时,与用户交互是否继续 if count != 3: continue again_choice = input('是否继续游戏,继续请输入"Y",否则任意键直接退出.') # 交互是否再一次 if again_choice == 'Y'or again_choice == 'y': count = 0 else: count1 = 2 break # 2. 年龄猜测正确时,选择礼物(该段代码运行前提,是玩家猜测年龄正确时才会运行) while count1 < 2 : print(good_list) choice = input(f'请输入你想要的奖品,如果不想要,则输入"n"退出!!!{count}') # 1. 判断是否为n(不想要礼物) if choice == 'n': break # 2. 判断输入是否为非法输入 if not choice.isdigit(): print('\n请输数字') continue # 如果不是,跳过,重复输入 # 3. 输入正确时送出礼物 choice = int(choice) print(f'恭喜你获得奖品: {good_list[choice]}') count1 += 1 # 礼物选取次数加一
二 三级菜单
- 打印省、市、县三级菜单
- 可返回上一级
- 可随时退出程序
- 傻瓜式进入
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } tag = True while tag: for key in menu: # 获取第一层key并输出 print(key) keys_input = input('第一层>>:') if keys_input == 'b': # 因为是第一层,输入b跳过下面代码会重复第一层代码 continue if keys_input == 'q': # 输入q,终止循环,跳出(下层都是会定义tag为false) break if keys_input not in menu: # 如果输入key不在字典里,跳过本次循环 continue while tag: for key in menu[keys_input]: print(key) keys2_input = input('第二层>>:') if keys2_input == 'b': # 输入b中断本层循环,回到上一层 break if keys2_input == 'q': # 输入q,tag=false,每层循环都会逐层跳出,最终终止所有循环) tag = False break # 也可以为continue if keys2_input not in menu[keys_input]: continue while tag: for key in menu[keys_input][keys2_input]: print(key) keys3_input = input('第三层>>:') if keys3_input == 'b': break if keys3_input == 'q': tag = False break if keys3_input not in menu[keys_input][keys2_input]: continue while tag: for key in menu[keys_input][keys2_input][keys3_input]: print(key) keys4_input = input('第四层>>:') if keys4_input == 'b': break if keys4_input == 'q': tag = False break if keys4_input not in menu[keys_input][keys2_input][keys3_input]: continue
- 迭代
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人民广场": { '炸鸡店': {} } }, '闸北': { '火车战': { '携程': {} } }, '浦东': {}, }, '山东': {}, } lt = [menu] # 利用列表控制每层内容读取的迭代 while True: menu1 = lt[-1] # 每次赋值的是列表lt最后一个,即字典的下一层内容 for key in menu1: # 将字典的下一层内容输出 print(key) chioce = input( f'第{len(lt)}层>>') if chioce == 'b': # 输入为b时,删掉列表中最后一个,即字典中的下一层, lt.pop() pass if chioce == 'q': break if chioce not in menu1: continue lt.append(menu1[chioce]) # 将下一层的字典的值放到列表lt的最后一个