我在代码中犯了什么错误?它正在运行,但没有为我所显示的输入提供它应该提供的答案

  • 本文关键字:显示 答案 代码 错误 运行 python
  • 更新时间 :
  • 英文 :


以下是问题:

你毕业于麻省理工学院,现在有一份很棒的工作!你搬到旧金山湾区决定你想开始存钱买房。由于湾区的房价很高,你意识到你必须储蓄几年才能付得起定金房屋付款。在A部分中,我们将确定您需要多长时间才能存够在给定以下假设的情况下,支付款项:

  1. 把你梦想中的房子的成本称为"i"。

  2. 将您迄今为止节省的金额称为"当前"。你从电流开始节省0美元。

  3. 假设你明智地投资当前的储蓄,年回报率为r(换句话说,每个月底,您将收到一笔额外的"流动*r/12"资金你的储蓄——12是因为r是年利率(。假设您的投资获得回归系数r=0.04(4%(。

  4. 假设你的年薪是i.

  5. 假设你每个月都要把一定数额的工资用于储蓄首付款。称之为"p"。该变量应为十进制形式(即0.110%(。

  6. 每个月底,你的储蓄将随着你的投资回报而增加,再加上你月薪的一个百分比(年薪/12(。写一个程序来计算你需要多少个月才能存下足够的钱来买房子付款您希望您的主变量是浮点的,所以您应该将用户输入强制转换为浮点
    您的程序应要求用户输入以下变量:

  7. 起始年薪(i(

  8. 要节省的工资部分(p(

  9. 你的梦想家园的成本(c(

这是我的代码:

i=int(input("Enter your annual salary:"))
p=float(input("Enter the percent of your salary to save, as a decimal:"))
c=float(input("Enter the cost of your dream home:"))
r=0
current=float(i*p*r/12)
for r in range(9999999):
if current<c:
current=current*(0.04)/12
else:
break
print("Number of months ="+ str( int(r)))

以下输入所需的正确输出为:

Enter your annual salary: 120000
Enter the percent of your salary to save, as a decimal: .10
Enter the cost of your dream home: 1000000
Number of months: 1000

但我得到的输出是:

Enter your annual salary:120000
Enter the percent of your salary to save, as a decimal:.10
Enter the cost of your dream home:1000000
Number of months =9999998

谁能告诉我为什么我错了吗?

附言:非常抱歉之前我上传了一个略有不同的问题;我现在提供了有关的问题。

问题就在这里:

current=current*(0.04)/12

在这一行中,您不进行累加,而是简单地覆盖current的值。

试着把你的解决方案写在纸上,问问自己这是否有意义。

for r in range(9999999):
if current<c:
current=current*(0.04)/12
else:
break
print("Number of months ="+ str( int(r)))

我注意到的是,无论怎样,current都将始终为0,因为如果current不变,0 < 1000000将始终为真。

current=current*(0.04)/12本质上就是0=0*(0.04)/12,看看它怎么总是0?

当CCD_;9999999";在此范围内,r将在此之前停止,中断并返回到您注意到的Number of months =9999998

代码本身运行正常,但我会重新检查逻辑。

最新更新