for循环应循环9次,而不是循环一次

时间:2015-02-10 04:11:29

标签: python python-3.x

以下代码应该从用户获取两个数字,然后说明哪个数字更高,9次,因此“计数器<10”除了它只取两个数字一次,然后循环结束。我以为我可以通过在我的循环中使用“counter = counter +1”来增加循环,但它似乎不起作用。任何帮助将不胜感激,谢谢!

counter = 0
for counter in range(counter < 10):
    num1 = float(input("Enter number 1: "))
    num2 = float(input("Enter number 2: "))
    if num1 > num2:
        print(num1)
    else:
        print(num2)
    counter = counter + 1

3 个答案:

答案 0 :(得分:6)

counter < 10返回True,等于1

>>> counter = 0
>>> counter < 10
True
>>> True == 1
True

反过来,range(1)会产生0(单项):

>>> list(range(counter < 10))
[0]

这就是为什么它循环一次。


而不是range(counter < 10),您应该使用range(9)。您不需要声明counter = 0并自行增加counter = counter + 1for声明照顾它:

>>> for i in range(3):
...     print(i)
... 
0
1
2

答案 1 :(得分:1)

counter<10相当于1.这就是为什么循环只运行一次( range(1)= {0} )。

您可以使用:

for counter in range(10):
    ...

counter = 0
while( counter<10 ):
    ...
    counter+=1

为了你的目的。

答案 2 :(得分:0)

为了使您更清楚,括号内的表达式首先进行评估。如果您想使用for,那么您需要传递一个序列,for将遍历该序列。 range()用于生成序列。但是在这里你将(count < 10)传递给range(),这是一个条件。因此,在评估时,它返回True,因为counter为0(在第一行中初始化)并且小于10.并且返回True相当于1,所以其余的按照falsetru

的描述进行

如果您想传递条件,则应使用while循环,而不是for。在for中,您甚至不需要单独初始化变量counter。如果你写: -

for counter in range(9):

这会初始化counter变量,并且会在每次迭代中递增。

对于您的问题,您可以使用以下任一方法: -

for counter in range(9):
    # No need to initialize counter
    do_stuff

# Initialize counter
counter = 0
while(counter <10):
    do_stuff