一 猜年龄游戏
1.给定年龄,用户可以猜三次年龄
2.年龄猜对,让用户选择两次奖励
3.用户选择两次奖励后可以退出
- 单流程
age = 24 # 答案
good_list = {0: '布娃娃', 1: '变形金刚', 2: '奥特曼', 3: ''}
# 判断年龄循环控制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: ''}
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的最后一个