python利用while和for循环三进三出

'''
要求:
1、逐级进入下一层;
2、逐级退出下一层;
3、直接退出主程序;
4、使用标志符;
'''


字典如下:
menu = {
'湖南': {
'怀化': {
'鹤城区': {},
'中方': {},
},
'邵阳': {
'武冈': {},
'隆回': {},
},
},
'湖北': {
'武汉': {
'武昌区': {},
'汉阳区': {},
},
'恩施': {
'宣恩': {},
'咸丰': {},
},
}
}


利用标志位进行返回,代码如下:
q = False                   #定义变量为假
while not q: #while条件为真,执行缩进
for address in menu: #for循环字典首层:湖南、湖北
print(address) #输出循环结果
choice = input('输入地名:').strip() #输入想进入的下一层,strip可以去掉头尾的空格
if choice in menu: #判断输入内容是否在字典首层里,是执行缩进
while not q: #进入第二层while循环,因为q是假,则条件为真,执行缩进
for address2 in menu[choice]: #for循环字典第二层
print(address2) #输出循环结果
choice1 = input('输入地名:').strip() #输入想进入的下一层
if choice1 == 'q': #如果输入的是q
q = True #则修改变量为真,退出for循环,回到第二层while,条件为假,直接退回第一层
if choice1 in menu[choice]: #如果输入地址在字典第二层,则进入第三层while循环
while not q: #这里q还是假,所以条件为真,执行缩进
for address3 in menu[choice][choice1]: #for循环字典第三层
print(address3) #输出循环结果
choice2 = input('输入q则返回,t则退回第一层:').strip() #因为没有下一层,所以要么回上一层,要么回第一层
if choice2 == 'q': #输入的如果是q
break #break直接退出该while循环,返回第二层while循环,条件为真,停在第二层
if choice2 == 't': #输入的如果是t
q=True #修改变量q为真 如果退出程序,直接写成quit()
break #跳出该while循环,返回第二层while,条件为假,执行第二层的else,返回第一层,停留在第一层目录
else:
q = False
else:
q= False

 

 

 
posted @ 2020-11-22 15:11  蜕变大哥  阅读(258)  评论(0)    收藏  举报