我不知道为什么终端一直运行并且不显示任何结果

问题描述 投票:0回答:1

这是我正在做的练习: 你已经从麻省理工学院毕业,现在有一份很棒的工作!您搬到旧金山湾区并且 决定你要开始存钱买房子。由于湾区房价非常高, 你意识到你必须存好几年才能付得起首付 房屋付款。在 A 部分中,我们将确定您需要多长时间才能存够足够的钱 鉴于以下假设,用于支付首付的钱:

  1. 将您梦想之家的成本称为total_cost。
  2. 将预付款所需的费用部分称为“partition_down_ payment”。为了 简单起见,假设partition_down_ payment = 0.25 (25%)。
  3. 将您迄今为止所节省的金额称为 current_ savings。你从一个电流开始 节省 0 美元。
  4. 假设您明智地投资当前的储蓄,年回报率为 r(换句话说, 每个月末,您都会收到额外的 current_ savings*r/12 资金用于投入 你的储蓄——12是因为r是年利率)。假设您的投资赚取了 r 的回报 = 0.04 (4%)。
  5. 假设你的年薪是annual_salary。
  6. 假设您每月将拿出一定数额的薪水来储蓄 首付。将该部分称为“partition_saved”。该变量应为十进制形式(即 0.1 10%)。
  7. 每个月末,您的储蓄将因您的投资回报而增加, 再加上您月薪的一定百分比(年薪/12)。 编写一个程序来计算您需要多少个月才能存够首付的钱 支付。您将希望主要变量是浮点数,因此您应该将用户输入转换为浮点数。
    1 您的程序应要求用户输入以下变量:
  8. 起薪年薪(annual_salary)
  9. 要保存的工资部分(portion_saved)
  10. 您梦想之家的成本(total_cost) 提示 为了帮助您开始,这里是您在撰写您的文章时可能应该遵循的阶段的粗略概述。 代码: ● 检索用户输入。如果您需要获取用户输入的帮助,请查看 input()。对于这个问题集, 您可以假设用户将输入有效的输入(例如,当您期望时,他们不会输入字符串 一个整数) ● 初始化一些状态变量。您应该决定需要哪些信息。小心 代表年度金额的值和代表每月金额的值。 尝试不同的输入,看看需要多长时间才能存够首付。请让您的 程序以下面测试用例中所示的格式打印结果。

测试案例1

输入您的年薪:120000, 输入要储蓄的工资百分比(小数形式):0.10, 输入您梦想家园的成本:1000000, 月数:183

测试案例2

输入您的年薪:80000, 输入要储蓄的工资百分比(小数形式):0.15, 输入您梦想家园的成本:500000, 月数:105, 这是我的代码:



#variables and inputs:
current_savings=0
r=0.04
additional_current_savings=current_savings*r/12
annual_salary=float(input("Enter your annual salary: "))
portion_saved=float(input("Enter the percent of your salary to save, as a decimal: "))
total_cost=float(input("Enter the cost of your dream home: "))
portion_down_payment=0.25*total_cost
monthly_salary=annual_salary / 12
new_total_saving=0
number_of_months=0
total_saving=portion_saved+current_savings+additional_current_savings
#a program to calculate how many months it will take someone to save up enough money for a down payment:
while new_total_saving != portion_down_payment :
 new_total_saving += total_saving
 number_of_months += 1
print(f"Number of months: {number_of_months}")

我知道我的程序并不包罗万象,但它至少应该解决测试用例 1。 我不知道为什么终端继续运行而没有任何结果。 预先感谢。

python loops variables while-loop
1个回答
0
投票

它没有给出结果的原因是因为它陷入了 while 循环中。因为

new_total_saving
可能会大于
portion_down_payment
但不等于它(如果它不是
total_saving
的精确倍数),因此循环将永远运行并且从不打印结果。要修复此问题并在保存了 more than
portion_down_payment
(而不是 exactly
portion_down_payment
)后结束循环,您可以将逻辑不等于 (
!=
) 更改为数值不等式 (
<
)。

© www.soinside.com 2019 - 2024. All rights reserved.