我想知道是否可以使用for loop
代替while
d = 0.6
b = 0.0
h = 0.0
t = 0.0
count = 0
h = float(input("enter height: "))
b = float(input("enter a number of bounces: "))
t = h
while count < b:
if count == b - 1:
t += h * d
#print(t)
else:
h = h * d
t += h * 2
#print(t)
count += 1
#print (t)
print(t)
答案 0 :(得分:1)
正如GLHF提醒我的那样,b
应该是一个int,以便下面的代码能够正常工作。
我认为没有理由变量b
,表示一些反弹是一个浮点数。此外,在原始代码中,您可以比较count
(一个int)和b
(来自用户输入的浮点数)。
如果b不是小数部分为0
的浮点数,则检查将失败,因此您可能希望将该行更改为b = int(input('Enter the number of bounces))
for count in range(b-1): # generates a sequence from 0 to b-2
h *= d
t += h * 2
#print(t)
t += h * d
print(t)
答案 1 :(得分:0)
由于您没有将变量从float
类型更改为integer
,因此您无法执行此操作,因为您需要range()
函数而range()
只接受整数类型
如果将变量设置为整数而不是float,则可以在for循环中使用它,如;
d = 0.6
b = 6 #bounce
h = 5 #height
t = 0.0
count = 0
t = h
for x in range(b):
if count == b-1:
t += h*d
else:
h *= d
t += h*2
count += 1
print (t)