在Python 3中使用For..else循环来打印出偶数和奇数的问题

时间:2019-08-18 19:15:24

标签: python python-3.x

我正在尝试在python3中使用for else循环来打印出奇数和偶数

下面是我写的:

for number in range(1, 20):
  if number % 2 == 0:
    print(f"even: {number}")
else:
   if number % 2 == 1:
     print(f"odd: {number}")

这是从上面产生的结果:

even: 2
even: 4
even: 6
even: 8
even: 10
even: 12
even: 14
even: 16
even: 18
odd: 19

如何修复原始程序以产生以下结果:

even: 2 
odd: 3 
even : 4
odd:5 
etc.

5 个答案:

答案 0 :(得分:4)

for / else循环的工作方式与您假设的不同。尽管您尝试过什么,但也许不是打印奇数和偶数的最佳方法。当循环由于else语句而没有结束时,将执行break部分。循环正常终止后(即,没有遇到break语句),将执行else部分。

for i in range(1, 20):
    if i%2 == 0:
        print("even: ", i)
        break
else:
    #Do something

这里,在打印2之后,循环将中断,然后执行进入else部分。

您可以参考此以获取有关for/else

的更多信息

答案 1 :(得分:1)

这对我有用:

for number in range(1, 20):
    if number % 2 == 0:
        print(f"even: {number}")
    else:
        if number % 2 == 1:
            print(f"odd: {number}")

您只需要将else:缩进到与if语句相同的缩进级别。 同样,第二个if:语句也是不必要的。您可以将其更改为:

for number in range(1, 20):
        if number % 2 == 0:
            print(f"even: {number}")
        elif number % 2 == 1:
            print(f"odd: {number}")

如果您仍然想要该条件。 elifelse: if:的工作原理相同。

答案 2 :(得分:0)

Python循环使用identation而不是{},因此您必须遵循2 spaces4 spaces,因此在每种情况下都必须缩进代码。

如果只有两个可能的场景,则无需编写另一个,因此只需将条件放在第一个场景上,否则放在第二个场景上
范围不包括最后一个数字,对于您来说它应该看起来像这样

for number in range(2, 21):
    #indent of 4 spaces, now you have to write every logic inside this indent
    if number % 2 == 0:
        #another indent of 4 spaces 
        print(f"even: {number}")
    else:
        print(f"odd: {number}")

答案 3 :(得分:0)

#The problem is your spacing...

#the below code will yield the result you don't want:

for number in range(1, 20):
    if number % 2 == 0:
        print(f"even: {number}")

else:
    if number % 2 == 1:
        print(f"odd: {number}")

#By spacing everything from "else" down over
#one tab "else" (and converting it to an elif to save space) #is now considered alternative
#to the above if statement:

for number in range(1, 20):
    if number % 2 == 0:
        print(f"even: {number}")

    elif number % 2 == 1:
            print(f"odd: {number}")

答案 4 :(得分:-1)

正确的代码。 Python教了很多缩进。

for i in range(1,20):
    if i%2 == 1:
        print("odd: ",i)
    else:
        print("even: ",i)