小 澜 同 学 2021-05-03 16:12 采纳率: 100%
浏览 55
已采纳

一个下标的问题 求解决

信息不匹配 

标题

 

这里是源码

def main():

    print(print('\n\t\t欢迎光临中移官旗店'))

    go_shopping = True # 程序运行的标志
    buy_git_num = []  # 存储用户所选的商品编号

    merchandise_info = [("iphone6s   ", 5800), ("mac book   ", 9000),
                        ("coffee     ", 32), ("python book", 80),
                        ("bicycle    ", 1500)]  # 商品信息
# """# 1. 利用枚举遍历打印商品列表
#     for i,v in enumerate(merchandise_info,start=1): # i---下标 v----值
#         print(f"\t\t\t{i}、{v[0]}\t\t¥{v[1]}")
#         # print("\t\t\t%d、%s\t\t¥%d"%(i, v[0], v[1]))"""
# 利用for , 以及python内置的 .index() 方法取其下标 , 打印商品列表
    str1 = "<商品列表>"
    print(str1.center(42,'-'))
    # 长这样------------------<商品列表>------------------
    for i,v in enumerate(merchandise_info,start=1): # i---下标 v----值
        print(f"\t\t\t{i}、{v[0]}\t\t¥{v[1]}")

    print("-"*46)


    salary_input_flag = True # 用户输入工资的标志
    while salary_input_flag == True:
        salary = input("请输入你的薪水:>>>>>") # 接受用户的输入

        if salary.isdigit(): # 通过方法判断用户输入的是数字
            salary = int(salary)  # 如果为真 则转换为整型数字
            salary_input_flag = False # 将标志设置为假 结束次循环
        else: # 输入的不是数字 请重新输入
            salary_input_flag = True # 将工资输入标志设为真, 即salary_input_flag = True , 继续该层循环
            print('工资输入错误')


    while go_shopping == True: # 当Go_shopping 设置为TRUE时进入次循环
        buy_input_flag = True # 用户购买标志

        while buy_input_flag == True: # 当购买标志为TRUE的时候开始次循环
            Quit = False # 初始化退出标志
            choice = input("请输入你要购买商品的序号或选择退出[1,2,3,4,5[q]:>>>")
            if choice.isdigit():  # 判断用户输入的商品号是否为“数字”
                choice = int(choice)  # 是“数字”, 则将其转为整型
                if choice > 0 and choice < 6:
                    buy_git_num.append(choice) # 存在 则将商品添加到购物车中
                    buy_input_flag = False # 同时 购买标志改为F 结束此循环

                else: # 商品不存在给用户提示
                    buy_input_flag = True
                    print("商品不存在!")
                    continue # 此处后不再向下循环 开始新的循环
            elif choice == 'Q' or choice == 'q':
                Quit = True
                go_shopping = False # 将购物标志设为False , 即该次循环结束后,不在继续循环

            else:
                print("\n商品不存在!!!")
                continue  # 此处后不再向下执行,而是开始新的循环

            if  Quit: # 如果退出标志被改为TRUE 执行if下的子模块
                input_quit = input('是否支付购物车内的商品?[Y/N]\n<<<<<')
                if input_quit == 'Y' or input_quit == 'y':
                    str2 = "<您已经购买以下商品>"
                    print("\n",str2.center(40,'-'),end='')

                    #  这里的遍历 购物车 看有几个商品
                    for i in range(1,len(buy_git_num) + 1):
                        print(f'\n\t{i} {merchandise_info[i-1][0]},'
                              f'{merchandise_info[i-1][1]}')
                        salary -= int(merchandise_info[i-1][1])  # 用户余额
                        print(f"\t剩余:{salary}")
                        if salary < 0:  # 资不抵债
                            print(f'剩余:{salary}余额不足')

                else: # 用户输入非Y/y的字符
                    str3 = "<您购物车中的商品>"
                    print('\n',str3.center(42,'-'),end='')
                    print(f'\n\t{i} {merchandise_info[i - 1][0]},'
                          f'{merchandise_info[i - 1][1]}')

                print(f'您的当余额为{salary}')
                print('-' * 46)
                print('\n\t\t\t欢迎下次光临')
                go_shopping = False # 同时将购物标志设为False,用于结束外层循
                break

            print(f'已经加入{merchandise_info[choice-1][0]}到您的购物车')
if __name__ == '__main__':  # 主程序入口
    main()		# 调用






 

 

 

 

 

 

  • 写回答

2条回答 默认 最新

  • 红尘觅沧桑 2021-05-03 16:31
    关注
    def main():
        print(print('\n\t\t欢迎光临中移官旗店'))
        go_shopping = True # 程序运行的标志
        buy_git_num = []  # 存储用户所选的商品编号
        merchandise_info = [("iphone6s   ", 5800), ("mac book   ", 9000),
                            ("coffee     ", 32), ("python book", 80),
                            ("bicycle    ", 1500)]  # 商品信息
    # """# 1. 利用枚举遍历打印商品列表
    #     for i,v in enumerate(merchandise_info,start=1): # i---下标 v----值
    #         print(f"\t\t\t{i}、{v[0]}\t\t¥{v[1]}")
    #         # print("\t\t\t%d、%s\t\t¥%d"%(i, v[0], v[1]))"""
    # 利用for , 以及python内置的 .index() 方法取其下标 , 打印商品列表
        str1 = "<商品列表>"
        print(str1.center(42,'-'))
        # 长这样------------------<商品列表>------------------
        for i,v in enumerate(merchandise_info,start=1): # i---下标 v----值
            print(f"\t\t\t{i}、{v[0]}\t\t¥{v[1]}")
        print("-"*46)
     
        salary_input_flag = True # 用户输入工资的标志
        while salary_input_flag == True:
            salary = input("请输入你的薪水:>>>>>") # 接受用户的输入
            if salary.isdigit(): # 通过方法判断用户输入的是数字
                salary = int(salary)  # 如果为真 则转换为整型数字
                salary_input_flag = False # 将标志设置为假 结束次循环
            else: # 输入的不是数字 请重新输入
                salary_input_flag = True # 将工资输入标志设为真, 即salary_input_flag = True , 继续该层循环
                print('工资输入错误')
     
        while go_shopping == True: # 当Go_shopping 设置为TRUE时进入次循环
            buy_input_flag = True # 用户购买标志
            while buy_input_flag == True: # 当购买标志为TRUE的时候开始次循环
                Quit = False # 初始化退出标志
                choice = input("请输入你要购买商品的序号或选择退出[1,2,3,4,5[q]:>>>")
                if choice.isdigit():  # 判断用户输入的商品号是否为“数字”
                    choice = int(choice)  # 是“数字”, 则将其转为整型
                    if choice > 0 and choice < 6:
                        buy_git_num.append(choice) # 存在 则将商品添加到购物车中
                        buy_input_flag = False # 同时 购买标志改为F 结束此循环
                    else: # 商品不存在给用户提示
                        buy_input_flag = True
                        print("商品不存在!")
                        continue # 此处后不再向下循环 开始新的循环
                elif choice == 'Q' or choice == 'q':
                    Quit = True
                    go_shopping = False # 将购物标志设为False , 即该次循环结束后,不在继续循环
                else:
                    print("\n商品不存在!!!")
                    continue  # 此处后不再向下执行,而是开始新的循环
                if  Quit: # 如果退出标志被改为TRUE 执行if下的子模块
                    input_quit = input('是否支付购物车内的商品?[Y/N]\n<<<<<')
                    if input_quit == 'Y' or input_quit == 'y':
                        str2 = "<您已经购买以下商品>"
                        print("\n",str2.center(40,'-'),end='')
                        #  这里的遍历 购物车 看有几个商品
                        for i in buy_git_num:
                            print(f'\n\t{i} {merchandise_info[i-1][0]},'
                                  f'{merchandise_info[i-1][1]}')
                            salary -= int(merchandise_info[i-1][1])  # 用户余额
                            print(f"\t剩余:{salary}")
                            if salary < 0:  # 资不抵债
                                print(f'剩余:{salary}余额不足')
                    else: # 用户输入非Y/y的字符
                        str3 = "<您购物车中的商品>"
                        print('\n',str3.center(42,'-'),end='')
                        for i in buy_git_num:
                            print(f'\n\t{i} {merchandise_info[i-1][0]},'
                                  f'{merchandise_info[i-1][1]}')
                    print(f'您的当余额为{salary}')
                    print('-' * 46)
                    print('\n\t\t\t欢迎下次光临')
                    go_shopping = False # 同时将购物标志设为False,用于结束外层循
                    break
                print(f'已经加入{merchandise_info[choice-1][0]}到您的购物车')
    if __name__ == '__main__':  # 主程序入口
        main()		# 调用
     
     
     
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 为什么跑这个代码,文件显示不在呀
  • ¥15 一道ban了很多东西的pyjail题
  • ¥15 关于#r语言#的问题:如何将生成的四幅图排在一起,且对变量的赋值进行更改,让组合的图漂亮、美观@(相关搜索:森林图)
  • ¥15 C++识别堆叠物体异常
  • ¥15 微软硬件驱动认证账号申请
  • ¥15 GPT写作提示指令词
  • ¥20 根据动态演化博弈支付矩阵完成复制动态方程求解和演化相图分析等
  • ¥20 关于DAC输出1.000V对分辨率和精度的要求
  • ¥15 华为超融合部署环境下RedHat虚拟机分区扩容问题
  • ¥15 哪位能做百度地图导航触点播报?