print("NOTE: Parcels can only be smaller than 100x100x100cm (WxLxH) and weight less than 20kg")
parcelAmount = int(input("How many parcels are you sending?: "))
for i in range(parcelAmount):
parcelWidth.append(input("Please enter the width of the parcel " + str(i + 1) + ": "))
parcelLength.append(input("Please enter the length of the parcel " + str(i + 1) + ": "))
parcelHeight.append(input("Please enter the height of the parcel " + str(i + 1) + ": "))
parcelWeight.append(input("please enter the weight of the parcel " + str(i + 1) + ": "))
i = i + 1
if float(parcelWidth[i]) or float(parcelLength[i]) or float(parcelHeight[i]) > int(100) or float(parcelWeight[i]) > int(20):
parcelRej = parcelRej + 1
parcelAcc = parcelAmount - parcelRej
if float(parcelWeight[i]) > 1 and float(parcelWeight[i]) < 5:
parcelPrice[i] = 10
if float(parcelWeight[i]) > 5:
parcelPrice[i] = parcelWeight[i] - 5 + 10
print("There are " + str(parcelRej) + " parcels rejected")
print("There are " + str(parcelAcc) + " parcels accepted")
print("It will cost $" + str(sum(parcelPrice)) + " To ship the parcel")
此代码查找发送宗地的价格。我一直得到&#34; IndexError:列表索引超出范围&#34;所有的if语句,我不知道为什么请帮助我。提前致谢 :)。
这是完整的代码,但是堆栈溢出说它代码太多而且没有足够的细节,所以我只想添加这个段落来添加空间,这样我就像你们问的那样添加完整的代码。那你们好吗?你们来自哪里?你们多大了?为什么它仍然是太少的文字和太多的代码... UGH什么时候会结束?
答案 0 :(得分:0)
看起来您需要更深入地了解数组是什么。数组有它的大小,所以你需要确保你没有超过它。带上你的parcelWidth[i]
。当i
的值大于parcelWidth
-1的大小时(这是因为数组的第一个元素被索引为0),会发生索引超出范围错误。
示例:
>>> parcelWidth = [1,2,3,4]
>>> i = 0
>>> parcelWidth[i]
1
>>> i = 3
>>> parcelWidth[i]
4
>>> i = 4
>>> parcelWidth[i]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
>>>
你现在有这个概念吗?您无法访问不存在的数组元素。
要快速检查数组的长度,可以使用len(),如下所示:
>>> len(parcelWidth)
4
为避免您的错误,请勿访问不存在的元素。可能你应该控制i
的高度,并检查所有数组是否都有足够的元素。
答案 1 :(得分:0)
先生,你的代码中的问题是你在for循环中提到的(i = i + 1)。 For循环将自动递增i,直到它的最后一个索引不需要递增(i)for for循环但如果你想使用while循环编写代码,你必须递增i。代码是
print("NOTE: Parcels can only be smaller than 100x100x100cm (WxLxH)
and weight less than 20kg")
parcelAmount = int(input("How many parcels are you sending?: "))
#parcelWidth=[]
#parcelLength=[]
#parcelHeight=[]
#parcelWeight=[]
#parcelRej=0
#for i in range(parcelAmount):
parcelWidth.append(input("Please enter the width of the parcel " +
str(i + 1) + ": "))
parcelLength.append(input("Please enter the length of the parcel "
+ str(i + 1) + ": "))
parcelHeight.append(input("Please enter the height of the parcel "
+ str(i + 1) + ": "))
parcelWeight.append(input("please enter the weight of the parcel "
+ str(i + 1) + ": "))
# i = i + 1
if float(parcelWidth[i]) or float(parcelLength[i]) or float(parcelHeight[i]) > 100 or float(parcelWeight[i]) > 20:
parcelRej = parcelRej + 1
parcelAcc = parcelAmount - parcelRej
if float(parcelWeight[i]) > 1 and float(parcelWeight[i]) < 5:
parcelPrice[i] = 10
if float(parcelWeight[i]) > 5:
parcelPrice[i] = parcelWeight[i] - 5 + 10
print("There are " + str(parcelRej) + " parcels rejected")
print("There are " + str(parcelAcc) + " parcels accepted")
print("It will cost $" + str(sum(parcelPrice)) + " To ship the parcel")
我收到错误,因为没有定义parcelPrice因为idk的值。
希望这对你有用..