Python中的初学者预算计划错误



我正在用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() .

最新更新