一个下标的问题 求解决

信息不匹配 

标题

 

这里是源码

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()		# 调用






 

 

 

 

 

 

 

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()		# 调用
 
 
 

想明白了 谢谢大佬