以下代码应该从用户获取两个数字,然后说明哪个数字更高,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
答案 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 + 1
。 for
声明照顾它:
>>> 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