字典应用:三级菜单

方法一:

# -*-coding:utf-8 -*-
__date__ = '2018/2/5 14:54'
__author__ = 'xiaojiaxin'
__file_name__ = '三级菜单'

#可返回上一级
#可随时退出程序

base1={
    1:{
        10:{
            11:{"十一"},
            12:{"十二"},
            13:{"十三"}
        },
        100:{
             101:{"一百零一"},
             102:{"一百零二"},
             103:{"一百零三"}
        },
        1000:{
             1001:{"一千零一"},
             1002:{"一千零二"},
             1003:{"一千零三"}
        }
         },
    2:{
        20:{
            21:{"二十一"},
            22:{"二十二"},
            23:{"二十三"}
        },
        200:{
             201:{"二百零一"},
             202:{"二百零二"},
             203:{"二百零三"}
        },
        2000:{
             2001:{"二千零一"},
             2002:{"二千零二"},
             2003:{"二千零三"}
        }
    },
    3:{
        30:{
            31:{"三十一"},
            32:{"三十二"},
            33:{"三十三"}
        },
        300:{
             301:{"三百零一"},
             302:{"三百零二"},
             303:{"三百零三"}
        },
        3000:{
             3001:{"三千零一"},
             3002:{"三千零二"},
             3003:{"三千零三"}
        }
    }
}

for i in base1:
    print(i)
choice1=0
choice2=0
choice3=0

while True:
    conti_jud=input("continue or not?[y/n]")
    if conti_jud=='y':
        choice1=int(input("choose num1:"))
        if choice1 in base1:
            #print("ok")

            for j in base1[choice1]:
                print(j)

            while True:
                conti_jud=input("continue or not?[y/n/back]")
                if conti_jud=='y':
                    choice2=int(input("choose num2:"))
                    if choice2 in base1[choice1]:

                        for k in base1[choice1][choice2]:
                            print(k)

                        while True:
                            conti_jud=input("continue or not?[y/n/back]")
                            if conti_jud=='y':
                                choice3=int(input("choose num3:"))
                                if choice3 in base1[choice1][choice2]:

                                    for l in base1[choice1][choice2][choice3]:
                                        print(l)
                                        exit()      #程序结束
                                else:
                                    print("The num isn’t exist!")


                            else:
                                break
                    else:
                        print("The num isn’t exist!")
                else:
                    break
        else:
            print("The num isn’t exist!")
    else:
        break

方法二:

# -*-coding:utf-8 -*-
__date__ = '2018/2/7 16:07'
__author__ = 'xiaojiaxin'
__file_name__ = '三级菜单优化版本'


base1={
    1:{
        10:{
            11:{"十一"},
            12:{"十二"},
            13:{"十三"}
        },
        100:{
             101:{"一百零一"},
             102:{"一百零二"},
             103:{"一百零三"}
        },
        1000:{
             1001:{"一千零一"},
             1002:{"一千零二"},
             1003:{"一千零三"}
        }
         },
    2:{
        20:{
            21:{"二十一"},
            22:{"二十二"},
            23:{"二十三"}
        },
        200:{
             201:{"二百零一"},
             202:{"二百零二"},
             203:{"二百零三"}
        },
        2000:{
             2001:{"二千零一"},
             2002:{"二千零二"},
             2003:{"二千零三"}
        }
    },
    3:{
        30:{
            31:{"三十一"},
            32:{"三十二"},
            33:{"三十三"}
        },
        300:{
             301:{"三百零一"},
             302:{"三百零二"},
             303:{"三百零三"}
        },
        3000:{
             3001:{"三千零一"},
             3002:{"三千零二"},
             3003:{"三千零三"}
        }
    }
}

current_layer=base1
front_layer=base1
count_lay=1

while True:
    print("num menu:")
    for i in current_layer:
        print(i)
    state=input("continue:[y],back:[b],quit:[n] :")
    if state=='y':
        ch=int(input("choose num:"))
        if ch not in current_layer:
            print("the num is not existed")
            continue
        else:
            front_layer=current_layer
            current_layer=current_layer[ch]
            count_lay+=1
            if count_lay==4:
                exit()

    elif state=='b':
        current_layer=front_layer
        count_lay-=1
        continue
    elif state=='n':
        exit()
    else:
        continue