day06作业

一 猜年龄游戏

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  # 礼物选取次数加一

二 三级菜单

  1. 打印省、市、县三级菜单
  2. 可返回上一级
  3. 可随时退出程序
  • 傻瓜式进入
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的最后一个

你可能感兴趣的:(day06作业)