将while循环更改为for循环

时间:2016-05-27 03:12:48

标签: python

我想知道是否可以使用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)

2 个答案:

答案 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)

range()

答案 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)