无限次返回一个字符串
Returning a String Endless Times
command = input("> ")
started = False
while True:
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
当我说“开始”时,它会无限时间渲染“汽车已经启动”,其他输入也是如此。我该如何抑制这个?如果能用初学者的语言解释一下会很有帮助,谢谢!!
每次while循环都需要输入新的命令,否则会陷入死循环,第一次输入的命令条件相同
代码:
started = False
while True:
command = input("> ")
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
结果:
> start
car started
> stop
car is stopped
> stop
car has already stopped
> start
car started
> start
car has already started
> quit
你的循环中发生的事情是:
while True
- while 循环将始终 运行 直到此语句为 False
,因为 True 永远不会为 False,这将永远循环直到 break 命令为 运行.
if command == "start"
- 因为 command
是在 while 循环之外设置的,所以它总是等于 start
并且这个 if 语句总是 运行
- 第一个 运行,它会打印“car started”,之后的每个循环都会打印“car has already started”。
要停止这种情况,您需要更改 command
的值以更改每次循环时的行为。为此,您可以在循环开始时获取输入:
started = False
while True:
command = input("> ") # Input inside the loop
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
您永远不会更改命令的值并且循环是 运行“while True”,因此它永远不会停止。
当用户输入“开始”时,您的脚本会将字符串“开始”分配给命令。
这是无限循环,因为第一个 if 语句正在检查变量 command 的值,在输入之后它将始终为“start”。
您可以通过多种方式解决。
一种是改变if语句后的变量名:
命令=输入(“>”)
开始=假
while True:
if command == "start":
if started:
print("car has already started")
command = ""
另一种方法是在每个 if 比较之后添加 break 命令。
您也可以将 while True
更改为 while not started
。循环将继续,直到您将变量 started
更改为 True,您已经在每个条件块之后执行此操作。
您需要将命令放在 while 循环中,以便循环停止,直到用户输入他想要的命令:
started = False
while True:
command = input("> ")
if command == "start":
...
男性一定要将输入添加到 while 循环中。在你的例子中,它只是接受一个输入,然后 command
的值是固定的。所以,这是一个无限循环。
但是当你更改位置并将其保留在循环中时,每次它要求输入时,command
的值都会改变。
此外,.lower()
会将输入转换为小写以消除不区分大小写的情况
started = False
while True:
command=input('>> ').lower()
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
command = input("> ")
started = False
while True:
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
当我说“开始”时,它会无限时间渲染“汽车已经启动”,其他输入也是如此。我该如何抑制这个?如果能用初学者的语言解释一下会很有帮助,谢谢!!
每次while循环都需要输入新的命令,否则会陷入死循环,第一次输入的命令条件相同
代码:
started = False
while True:
command = input("> ")
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
结果:
> start
car started
> stop
car is stopped
> stop
car has already stopped
> start
car started
> start
car has already started
> quit
你的循环中发生的事情是:
while True
- while 循环将始终 运行 直到此语句为False
,因为 True 永远不会为 False,这将永远循环直到 break 命令为 运行.if command == "start"
- 因为command
是在 while 循环之外设置的,所以它总是等于start
并且这个 if 语句总是 运行- 第一个 运行,它会打印“car started”,之后的每个循环都会打印“car has already started”。
要停止这种情况,您需要更改 command
的值以更改每次循环时的行为。为此,您可以在循环开始时获取输入:
started = False
while True:
command = input("> ") # Input inside the loop
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break
您永远不会更改命令的值并且循环是 运行“while True”,因此它永远不会停止。
当用户输入“开始”时,您的脚本会将字符串“开始”分配给命令。
这是无限循环,因为第一个 if 语句正在检查变量 command 的值,在输入之后它将始终为“start”。
您可以通过多种方式解决。 一种是改变if语句后的变量名:
命令=输入(“>”) 开始=假
while True:
if command == "start":
if started:
print("car has already started")
command = ""
另一种方法是在每个 if 比较之后添加 break 命令。
您也可以将 while True
更改为 while not started
。循环将继续,直到您将变量 started
更改为 True,您已经在每个条件块之后执行此操作。
您需要将命令放在 while 循环中,以便循环停止,直到用户输入他想要的命令:
started = False
while True:
command = input("> ")
if command == "start":
...
男性一定要将输入添加到 while 循环中。在你的例子中,它只是接受一个输入,然后 command
的值是固定的。所以,这是一个无限循环。
但是当你更改位置并将其保留在循环中时,每次它要求输入时,command
的值都会改变。
此外,.lower()
会将输入转换为小写以消除不区分大小写的情况
started = False
while True:
command=input('>> ').lower()
if command == "start":
if started:
print("car has already started")
else:
started = True
print("car started")
elif command == "stop":
if not started:
print("car has already stopped")
else:
started = False
print("car is stopped")
elif command == "quit":
break