我很难创建一个程序,每次运行该函数时都会在字符串“X”和“O”之间切换。
因此,例如,第一次运行 switcher() 时,它打印“x”,下一次运行时,它打印“o”,第三次它打印“x”,依此类推
我已经能够在没有函数的情况下仅使用 if else 循环来实现这一点,但是我不能使用函数来实现它
def switch(value):
if value == 0:
x = value
x + 1
print("value: " + str(x) + " | turn: x")
return x
else:
print("o")
return 0
x = 0
for i in range(4):
switch(x)
它输出:
value: 0 | turn: x
value: 0 | turn: x
value: 0 | turn: x
value: 0 | turn: x
为了实现这一点,我让它在 x = 0 时打印“X”,当它为 1 时打印“O”,然后重置回 0。它保持为 0 并且只给我 x .
使用 itertools 中的循环
我认为一个好的方法是使用函数 cycle
在 itertools 中
from itertools import cycle
def switch():
return cycle(["X", "O"])
i = 0
for output in switch():
i += 1
print(output)
if i == 5:
break
输出:
X
O
X
O
X
使用全局变量
您还可以使用全局变量来跟踪最后生成的值。但是,使用全局变量并不是一个好主意。
last_value = None
def switch():
global last_value
if last_value in (None, "O"):
last_value = "X"
return "X"
last_value = "O"
return "O"
for _ in range(5):
print(switch())
输出:
'X'
'O'
'X'
'O'
'X'
使用局部变量
您还可以传递一个参数,指示返回的最后一个值。
def switch(last_value):
if last_value in (None, "O"):
return "X"
return "O"
last_value = None
for _ in range(5):
last_value = switch(last_value)
print(last_value)
输出:
X
O
X
O
x
我是一名优秀的程序员,十分优秀!