首页 > 解决方案 > 覆盖变量时出错。以 10 为底的 int() 的无效文字:

问题描述

print('Enter your monthly budget.')
myBudget = input()
print('Your monthly input is $' +myBudget)

myExp = 0
while myExp != 'Done':
    print("Enter your monthly expenses, one by one using the designated format. Once you are finished, type 'Done' to finish calculations.")
    myExp += int(input())
    if myExp == 'Done':
        break
    if myExp != 'Done':
        continue

print('Your budget for the month is: $'+myBudget)
print('Your expenses for the month is: $' +myExp)
Total = int(myBudget) - int(myExp)
if Total < 0:
    print('You are under budget by: $' + Total)
else:
    print('You are over budget by: $' +Total)

对于我的一个课程,我们应该创建一个循环,添加用户的每月费用,然后从他们的预算中减去它,然后告诉用户他们超出或低于预算多少。我遇到的主要问题是myExp的输入被 'Done' 覆盖以中断循环,并且我遇到了 int() 基数为 10: 的无效文字。如何将代码更改为将继续添加输入并防止变量被“完成”覆盖的位置?

标签: python

解决方案


你需要重新思考这里的逻辑。您检查是否myExp != 'Done'多次,但这总是正确的,因为它总是一个整数。另一方面,从不检查实际输入。

尝试按以下方式组织收集用户费用的代码:在无限循环中,

  1. 获取 的返回值input(),将其存储在变量中
  2. 如果它等于字符串'Done',则跳出循环
  3. 如果不是,则转换为整数并添加到费用中

推荐阅读