为什么显示错误,列表索引超出范围?

2024-10-02 12:38:48 发布

您现在位置:Python中文网/ 问答频道 /正文

def Receipt():
    print("Receipt:")
    print("\n")
    print(Customer_name, "ordered:")
    if numPizza == 1:
        print("%s" % str(order[0]))
    elif numPizza == 2:
        print("%s" % str(order[0]))
        print("%s" % str(order[1]))
    elif numPizza == 3:
        print("%s" % str(order[0]))
        print("%s" % str(order[1]))
        print("%s" % str(order[2]))
    elif numPizza == 4:
        print("%s" % str(order[0]))
        print("%s" % str(order[1]))
        print("%s" % str(order[2]))
        print("%s" % str(order[3]))
    elif numPizza == 5:
        print("%s" % str(order[0]))
        print("%s" % str(order[1]))
        print("%s" % str(order[2]))
        print("%s" % str(order[3]))
        print("%s" % str(order[4]))

numPizza变量来自代码中的另一个输入。你知道吗

numPizza = input("Enter number of pizzas wanted (Max 5):  ")

这是它打印的错误:

    print("%s" % str(order[1]))
IndexError: list index out of range

Tags: of代码nameinputifdefordercustomer
2条回答

原因是,order列表中没有项目,或者只有一个项目。你知道吗

注意,列表是基于零的索引,所以要访问第一项,请使用order[0]

要签入您的代码,您的列表变量有足够的项,您可以添加到那里

 assert len(order) >= 2

这应该在语句尝试使用给定的索引1之前完成(在开发过程中)。你知道吗

如果不满足此前提条件,它将抛出异常。你知道吗

您的numPizza可能没有指定正确的值。检查一下。你知道吗

在Python中,您不必单步遍历这样的列表,而是考虑以下内容:

def receipt():  # method names should be lower case
    print("Receipt:\n")
    print('{} ordered:\n'.format(Customer_name))
    for item in order:
       print('{}'.format(item))

现在,不管订单上有多少个披萨,它们都会被打印出来。您可以通过加入结果列表来进一步缩短代码:

>>> '\n'.join(['a','b','c'])
'a\nb\nc'

但请记住,如果您的列表包含一个数字,这将不起作用:

>>> '\n'.join(['a','b',1])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: sequence item 2: expected string, int found

相关问题 更多 >

    热门问题