如何制作python" goto"前一行获得更多输入?

时间:2014-08-23 02:32:57

标签: 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")
    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行并从那里继续执行程序......我该怎么做?

2 个答案:

答案 0 :(得分:4)

Goto语句通常用于非常低级的语言,如汇编或基本语言。在像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")

答案 1 :(得分:0)

您可以使用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将永远循环,但实际上,只要我们得到我们喜欢的输入,我们就会breakgoto这会解决你的问题。

代码中永远不需要goto。几乎总有一种方法可以重新构建您的程序,因此它可以在没有{{1}}的情况下工作,因此它可能会更好地工作。