在Python中,为什么以下2个函数不同,即该函数如何:
def year (rate):
money=100
count=0
while money<(2*money):
money+=money*rate
print ("{0:.2f}".format(money))
count+=1
return (count)
(导致count
的值10423
)与其他函数不同?
def year (rate):
money=100
count=0
while money<200:
money+=money*rate
print ("{0:.2f}".format(money))
count+=1
return (count)
(导致count
的值为11
)
如果我们假设x = 100,则x&lt; 200与x&lt;(x + x)相同。另外,不是x + x = 200?
答案 0 :(得分:3)
money < 2 * money
一直都是真的。
因为money
会增加,2 * money
也会增加。
答案 1 :(得分:2)
您正在使用money
在循环期间更改money += money*rate
的值,因此看起来您正在创建无限循环。如果你做了这样的事情,你应该开始看到你期望的结果:
def year (rate):
money=100
count=0
end_limit = 2*money
while money<(end_limit):
money+=money*rate
print ("{0:.2f}".format(money))
count+=1
return (count)
答案 2 :(得分:0)
在第一个函数中,如果要与原始money
进行比较,可以执行以下操作:
def year (rate):
money=100
orig_money = money
count=0
while money < (2 * orig_money):
money+=money*rate
print ("{0:.2f}".format(money))
count+=1
return (count)
# count=10423
答案 3 :(得分:0)
正如其他人所说,你的表达式money<(2*money)
会发生变化并且不会保持不变。在大多数情况下,所有表达式都应保留其条件,以防止无限/无限循环。
尝试而不是将变量与同一变量进行比较,因为这会导致表达式的左侧和右侧都发生变化。
使用money < 200
,200是常量。循环的每次迭代都将检查此常量,然后确定继续或退出循环。
希望我已经把这种情况弄清楚了。 :)