我正在尝试在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.
答案 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}")
如果您仍然想要该条件。 elif
与else: if:
的工作原理相同。
答案 2 :(得分:0)
Python循环使用identation
而不是{}
,因此您必须遵循2 spaces
或4 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)