python - 我是 python 新手,我的列表超出范围有问题
问题描述
所以我在这里得到一个超出范围的列表索引:
for i in range(len(empNr)):
print(empNr[i], rate[i], hrs[i], wkPay[i])
而且我还没有真正弄清楚列表,所以我可能只是感到困惑并且无法理解为什么我会超出范围。下面是其余的代码。谢谢!
SENTINEL = 0
wkTotal = payHigh = wkPay = empHigh = 0
empNr = []
rate = []
hrs = []
wkPay = []
i = 0
empNr.append(input("Input first employee number: "))
#iteration if 0 is entered it should stop
while (empNr[i] != str(SENTINEL)):
rate.append(int(input("Input rate: ")))
hrs.append(int(input("Input hours: ")))
wkPay.append(rate[i] * hrs[i])
i = i + 1
empNr.append(input("Input employee number or '0' to stop: "))
#calculations using list functions
wkTotal = sum(wkPay)
payHigh = max(wkPay)
wkAvg = float(wkTotal) / len(empNr)
#output summary for pay calculator
print("\n\n Data entry complete " +" \n --------------------------------------")
print("\n Employee Number Pay Rate Hours worked Pay ")
print("--------------------------------------------------------")
for i in range(len(empNr)):
print(empNr[i], rate[i], hrs[i], wkPay[i])
print("Summary: ")
print("WEEK TOTAL: ", str(wkTotal))
print("EMPLOYEE HIGH: ", str(empHigh))
print("PAY HIGH: ", str(payHigh))
print("WEEK AVERAGE: ", str(wkAvg))
解决方案
empNr.append(input("Input employee number or '0' to stop: "))
此行附加'0'
到empNr
. 但它没有rate
,hrs
或的对应值wkPay
。意思rate
,hrs
或者wkPay
说这些比的少一个元素empNr
。快速修复(但不推荐)是循环 forrate
或hrs
代替empNr
. 所以你的代码是:
for i in range(len(rate)):
print(empNr[i], rate[i], hrs[i], wkPay[i])
更好的解决方法是:
i = 0
inp = input("Do you want to add anew record? Y/n: ")
while (inp == "Y"):
empNr.append(input("Input first employee number: "))
rate.append(int(input("Input rate: ")))
hrs.append(int(input("Input hours: ")))
wkPay.append(rate[i] * hrs[i])
i = i + 1
inp = input("Do you want to add anew record? Y/n: ")
empNr
因此,当我输入“Y”时,我可以添加新条目,并且每个, rate
, hrs
,的长度都wkPay
将匹配。如果我输入除 以外Y
的任何内容,循环将终止,长度仍将保持不变......
推荐阅读
- python - 替换列表列表内容的pythonic方式?
- visual-studio - 是否可以通过键绑定搜索键盘快捷键(Visual Studio 2017)
- angularjs - 角度路线不
- .net - 如何在 UserControl 上启用 DataGridView
- scala - 使用 $ 符号无法在 Scala 中读取环境变量
- python - 如何确定图像的亮度/饱和度是否更高/更低?
- naming - “afterOrEqualDate”方法的更好名称
- angular - Angular 回历日期和时间选择器
- shell - 如何使用一些自定义文本打印 Solaris 服务器的本地磁盘
- java - JPanel 在另一个 JPanel 的函数中的大小