“如何制作python”;“转到”;前一行可以获得更多输入吗?

“如何制作python”;“转到”;前一行可以获得更多输入吗?,python,if-statement,goto,Python,If Statement,Goto,所以我知道goto是一种非常糟糕的编码形式,但是当控制台中的输入不正确时,我需要一个程序返回到前一行 print ("You wake up.") print ("You do what?") seg1 = input() if seg1 == ("Stand") or seg1 == ("stand") or seg1 == ("stand up") or seg1 == ("Stand up") or seg1 == ("Stand Up"): print ("You get up"

所以我知道goto是一种非常糟糕的编码形式,但是当控制台中的输入不正确时,我需要一个程序返回到前一行

print ("You wake up.")
print ("You do what?")
seg1 = input()
if seg1 == ("Stand") or seg1 == ("stand") or seg1 == ("stand up") or seg1 == ("Stand up") or seg1 == ("Stand Up"):
    print ("You get up")
    print ("You look around you... your in a dark room. A door hangs slightly ajar infront of you.")
    print ("You do what?")
else:
    print ("I dont understand")

在else语句运行之后,我希望它重复第2行,并从那里继续执行程序。。。我如何才能做到这一点?

您可以通过
while
循环而不是
goto
来实现这一点,如下所示:

print ("You wake up.")
print ("You do what?")
while True:
    seg1 = input()
    if seg1 == ("Stand") or seg1 == ("stand") or seg1 == ("stand up") or seg1 == ("Stand up") or seg1 == ("Stand Up"):
        print ("You get up")
        print ("You look around you... your in a dark room. A door hangs slightly ajar infront of you.")
        print ("You do what?")
        break
    else:
        print ("I dont understand")
所发生的事情是,
while
将被认为是永远循环的,但事实上,一旦我们得到我们喜欢的输入,我们就会
中断它。这会解决你的问题


goto
在您的代码中永远不应该是必需的。几乎总是有一种方法可以重新构造程序,使其在不使用
goto的情况下工作,因此可能会工作得更好。

goto语句通常用于汇编或basic等非常低级的语言中。在python这样的高级语言中,它们被抽象出来,因此不存在。您希望这样做的方式是使用循环(这是goto语句的抽象)。这可以通过以下代码实现

valid_input = False
while not valid_input:
    print ("You wake up.")
    print ("You do what?")
    seg1 = input()
    if seg1 == ("Stand") or seg1 == ("stand") or seg1 == ("stand up") or seg1 == ("Stand up") or seg1 == ("Stand Up"):
       print ("You get up")
       print ("You look around you... your in a dark room. A door hangs slightly ajar infront of you.")
       print ("You do what?")
       valid_input = True
   else:
       print ("I dont understand")

也许试着说一句话?参考:真实的故事:当我年轻一点,只认识巴西卡的时候,有人告诉我他们写了一个完整的程序,没有任何GOTOs。这让我大吃一惊。(这些天我很高兴几乎忘记了GOTO。)当然。使用GOTO是一种不好的做法。请尝试使用此语句而不是当前的if语句:
if seg1.lower()。