为了账号安全,请及时绑定邮箱和手机立即绑定

如果二维列表的元素不在范围内,如何处理错误

如果二维列表的元素不在范围内,如何处理错误

素胚勾勒不出你 2023-02-15 17:34:34
我正在尝试错误处理 doughnuts_gone 的输入。用户应输入列表的元素位置。例如,如果他们想以 18 美元的价格删除 6 个奶油甜甜圈的订单,那么您应该输入列表的位置;先列出so位置0,然后把2d列表中的列表元素位置去掉。我的程序的问题是,如果输入的数字不在列表中可用元素的范围内,我不知道如何编写 elif 语句:elif i != total_order[i]:简化程序:def check_valid(prompt):        while True:            try:                i = int(input(prompt))                if i == '':                    print("You must enter a value for the doughnut item you would like to change.")                    print()                elif i != total_order[i]:                    print("Invalid")                else:                    break            except:                break        return itotal_order = [['Cream',6,18], ['Cookies',5,20], ['Jam',6,16]]for i in range(len(total_order)):    print("{}     {} {} Doughnuts = ${:.2f}".format(i, total_order[i][1],total_order[i][0],total_order[i][2]))doughnuts_gone = check_valid("Enter the number associated with the doughnut order you would like to remove? ")谢谢你!我希望这是有道理的!:)
查看完整描述

1 回答

?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

您将i变量检查为字符串 ( if i == '':),但它在前一行 ( i = int(input(prompt))) 中被强制转换为整数。您应该检查列表的长度而不是这一行:elif i != total_order[i]:。由于这个问题,您的脚本无法正常工作。我写了一个工作代码,我已经测试了它。请参阅下面我的代码/测试。


此外,您的货车会改进您的代码(例如:检查输入是否可以转换为整数。)。


代码:


def check_valid(prompt):

    while True:

        try:

            i = input(prompt)

            if not i:

                print("You must enter a value for the doughnut item you would like to change.")

                print()

            elif int(i) > len(total_order)-1:

                print("Invalid")

            else:

                break

        except:

            break

    return int(i)



total_order = [['Cream', 6, 18], ['Cookies', 5, 20], ['Jam', 6, 16]]


for i in range(len(total_order)):

    print("{}     {} {} Doughnuts = ${:.2f}".format(i, total_order[i][1], total_order[i][0],

                                                    total_order[i][2]))

doughnuts_gone = check_valid(

    "Enter the number associated with the doughnut order you would like to remove? ")

print("Valid value! Selected one: {}".format(total_order[doughnuts_gone]))

输出:


>>> python3 test.py

0     6 Cream Doughnuts = $18.00

1     5 Cookies Doughnuts = $20.00

2     6 Jam Doughnuts = $16.00

Enter the number associated with the doughnut order you would like to remove? 3

Invalid

Enter the number associated with the doughnut order you would like to remove? 

You must enter a value for the doughnut item you would like to change.


Enter the number associated with the doughnut order you would like to remove? 0

Valid value! Selected one: ['Cream', 6, 18]


查看完整回答
反对 回复 2023-02-15
  • 1 回答
  • 0 关注
  • 86 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信