我正在用Python 3创建一个基本的预算程序。
它需要创建一系列三个人,并在周末给他们薪水、2 个费用和剩余的现金。您还将比较他们剩余的费用与他们每周需要节省的金额进行比较。我相信我已经完成了所有工作,除了这个问题,每当我运行程序时,我都会收到以下消息:
Traceback (most recent call last):
File "/Users/----/Desktop/BudgetProgramTest.py", line 42, in
personOneLeftOver = personOneSalary - personOneExpenses
TypeError: unsupported operand type(s) for -: 'str' and 'tuple'
如何解决此错误?对此进行编码的正确方法是什么?使用我的程序的原始代码会更容易理解:
<prev>
# Ask for each person's name
personOne = input("What is your name?")
personTwo = input("What is your name?")
personThree = input("What is your name?")
# Ask for each person's weekly salary
personOneSalary = input("What is your weekly salary?")
personTwoSalary = input("What is your weekly salary?")
personThreeSalary = input("What is your weekly salary?")
# Ask for personOne's expenditures
personOneGas = input("How much do you spend on gas per week?")
personOneGroc = input("How much do you spend on groceries per week?")
personOneFast = input("How much do you spend on fast food per week?")
personOneHob = input("How much do you spend on hobbies per week?")
personOneExpenses = personOneGas, personOneGroc, personOneFast, personOneHob
# Ask for personTwo's expenditures
personTwoGas = input("How much do you spend on gas per week?")
personTwoGroc = input("How much do you spend on groceries per week?")
personTwoFast = input("How much do you spend on fast food per week?")
personTwoHob = input("How much do you spend on hobbies per week?")
personTwoExpenses = personTwoGas, personTwoGroc, personTwoFast, personTwoHob
# Ask for personThree's expenditures
personThreeGas = input("How much do you spend on gas per week?")
personThreeGroc = input("How much do you spend on groceries per week?")
personThreeFast = input("How much do you spend on fast food per week?")
personThreeHob = input("How much do you spend on hobbies per week?")
personThreeExpenses = personThreeGas, personThreeGroc, personThreeFast, personThreeHob
# Set each person's left over money by subracting expenses from each person's weekly salary
personOneLeftOver = personOneSalary - personOneExpenses
personTwoLeftOver = personTwoSalary - personTwoExpenses
personThreeLeftOver = personThreeSalary - personTwoExpenses
# Set each person's goal to save each week (to compare in the future)
personOneSavesGoal = personOneLeftOver * .10
peraonTwoSavesGoal = personTwoLeftOver * .10
personThreeSavesGoal = personThreeLeftOver * 10
# See if personOne has met their goal of saving 10% after expenses
if PersonOneLeftOver >= personOneSavesGoal:
print("Congratulations, you are on your way to financial freedom!")
else:
print(personOne, " needs to save more money.")
# See if personTwo has met their goal of saving 10% after expenses
if PersonTwoLeftOver >= personTwoSavesGoal:
print("Congratulations, you are on your way to financial freedom!")
else:
print(personTwo, " needs to save more money.")
# See if personThree has met their goal of saving 10% after expenses
if PersonThreeLeftOver >= personThreeSavesGoal:
print("Congratulations, you are on your way to financial freedom!")
else:
print(personThree, " needs to save more money.")
# Display each person's name, weekly salary, expensive, weekly salary after expenses, and amount of moneuy needed to save
print(personOne, "your weekly salary is: ", personOneSalary, " and your expenses are: ", personOneExpenses, ".")
print("Your weekly salary is ", personOneLeftOver, " after your expenses. You need to save", personOneSavesGoal, ".")
print(personTwo, "your weekly salary is: ", personTwosalary, " and your expenses are: ", personTwoExpenses, ".")
print("Your weekly salary is ", personTwoLeftOver, " after your expenses. You need to save", personTwoSavesGoal, ".")
print(personThree, "your weekly salary is: ", personThreeSalary, " and your expenses are: ", personThreeExpenses, ".")
print("Your weekly salary is ", personThreeLeftOver, " after your expenses. You need to save", personThreeSavesGoal, ".")
<prev>
您的代码上有一些错误。
1 - input
总是返回一个字符串,因此所有需要的地方都必须更新一个数字才能int(input(...))
;例如:
personTwoGas = int(input("How much do you spend on gas per week?"))
2 - 每当对元组或列表求和时,都必须使用 sum()
。例如:
personOneLeftOver = float(personOneSalary) - sum(personOneExpenses)
很可能有更多的错误,只是指出那些可能会阻止您开发此任务的错误。
试试这个:
personOneLeftOver = float(personOneSalary) - sum(personOneExpenses)
您已将费用定义为元组。 您可以将元组中的所有值与 sum()
.