我正在使用Python 3.这是针对课程的家庭作业项目,但我并不是想找点事情来帮我解决问题!我只是想知道是否有人可以帮助指出我出错的地方,或者我需要考虑使我的代码工作。
def main():
taxPayersList = []
incomesList = []
taxesList = []
taxPayersList, incomesList = inputNamesAndIncomes(taxPayersList, incomesList)
taxesList = calculateTaxes(incomesList)
displayTaxReport(taxesList, incomesList, taxPayersList)
def inputNamesAndIncomes(taxPayersList, incomesList):
print('Welcome to Xanadu Tax Computation Program')
print('')
confirmation = input('Do you have income amounts? y/n ')
index = 0
try:
while confirmation == 'y' or confirmation == 'Y':
taxPayersList[index] = input('Enter a tax payer name: ')
incomesList[index] = float(input('Enter income amount: '))
confirmation = input('Are there more income amounts? ')
index += 1
except:
print('An error occurred. Please only enter numbers for income amount.')
return taxPayersList, incomesList
def calculateTaxes(incomesList):
index = len(incomesList)
while index < len(incomesList):
if incomesList[index] >= 0 and incomesList[index] <= 50000:
taxesList[index] = incomesList[index] * .05
elif incomesList[index] >= 50000 and incomesList[index] <= 100000:
taxesList[index] = 2500 + ((incomesList[index] - 50000) * .07)
elif incomesList[index] >= 100000:
taxesList[index] = 6000 + ((incomesList[index] - 100000) * .09)
index += 1
return incomesList
def displayTaxReport(taxesList, incomesList, taxPayersList):
print('2018 TAX DUES FOR XANADU STATE')
print('')
print('Name\t\tANNUAL INCOME\tTAXDUE')
for n in incomesList:
print(taxPayersList,'\t\t',incomesList,'\t',taxesList)
main()
现在,我可以在第一个输入中输入一个名字,但是一旦我点击输入它就会打印出我的错误代码,然后打印出如下所示的最终功能。
Welcome to Xanadu Tax Computation Program
Do you have income amounts? y/n y
Enter a taxpayer name: Susan
An error occurred. Please only enter numbers for income amount.
2018 TAX DUES FOR XANADU STATE
Name ANNUAL INCOME TAXDUE
我知道这是一团糟,但任何帮助都会非常感激!
答案 0 :(得分:1)
您不能只为列表添加一个不存在的索引来向其中添加项目:
>>> a = []
>>> a[0] = 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
相反,您应该考虑使用.append()
方法列表。
(您没有看到IndexError
调试详细信息的原因是因为您的except
子句阻止了它的显示。裸except
子句通常被认为是反模式,因为它们掩盖了意外像这样的错误并且更难分辨出错误 - 它们会捕获任何异常,而不仅仅是由于用户输入错误导致的异常。)
答案 1 :(得分:1)
行
有一个IndexError: list assignment index out of range
taxPayersList[index] = input('Enter a tax payer name: ')
您没有看到它,因为您排除了所有错误并且没有打印它们。我建议使用
name = input('Enter a tax payer name:')
taxPayersList.append(name)
等。请注意,我将其附加到列表中。我还建议采用不同的处理错误的策略。
或者,您可能希望使用字典而不是使用两个列表,因为您希望将收入与名称相关联,
name = input('Enter a tax payer name:')
income = float(input('Enter income amount:'))
incomes[name] = income