python - 覆盖变量时出错。以 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: 的无效文字。如何将代码更改为将继续添加输入并防止变量被“完成”覆盖的位置?
解决方案
你需要重新思考这里的逻辑。您检查是否myExp != 'Done'
多次,但这总是正确的,因为它总是一个整数。另一方面,从不检查实际输入。
尝试按以下方式组织收集用户费用的代码:在无限循环中,
- 获取 的返回值
input()
,将其存储在变量中 - 如果它等于字符串
'Done'
,则跳出循环 - 如果不是,则转换为整数并添加到费用中
推荐阅读
- spring - Keycloak with Spring Cloud Gateway
- javascript - jQuery 单击事件未在第一次单击时运行。(转到页面顶部操作)
- php - 如何从 HTML 中获取 $name 的信息
- c# - c#使用WriteConsoleOutput写Unicode
- sequelize.js - 当使用 set 或为多对多关联添加 mixin 时,Sequelize AfterHook 不会调用
- contacts - 寻找免费收集不同的 vCard (*.vcf)
- laravel - 配置 laravel 后按钮消失
- linux - 如果我一次处理 600 多个文件夹会怎样?
- c - tid 状态变化时获取信号
- android - 无法从 adb 命令 Android 10 获取活动名称