替代藤,标签在Python?(Alternative to Goto, Label in Pytho

2019-09-28 09:38发布

我知道我不能使用goto,我知道后藤不是答案。 我读过类似的问题,但我不能想出一个办法来解决我的问题。

所以,我正在写一个程序,在其中你要猜一个数字。 这是我有问题的部分的摘录:

x = random.randint(0,100)    

#I want to put a label here

y = int(raw_input("Guess the number between 1 and 100: "))

if isinstance( y, int ):
    while y != x:
        if y > x:
            y = int(raw_input("Wrong! Try a LOWER number: "))
        else:
            y = int(raw_input("Wrong! Try a HIGHER number "))
else:
    print "Try using a integer number"
    #And Here I want to put a kind of "goto label"`

你会怎么做?

Answer 1:

有很多方法可以做到这一点,但通常你要使用循环,你可能想要探索breakcontinue 。 这里是一个可能的解决方案:

import random

x = random.randint(1, 100)

prompt = "Guess the number between 1 and 100: "

while True:
    try:
        y = int(raw_input(prompt))
    except ValueError:
        print "Please enter an integer."
        continue

    if y > x:
        prompt = "Wrong! Try a LOWER number: "
    elif y < x:
        prompt = "Wrong! Try a HIGHER number: "
    else:
        print "Correct!"
        break

continue跳到循环的下一个迭代,并break完全终止循环。

(另请注意,我包int(raw_input(...))在try / except来处理该用户没有输入整数的情况下,在你的代码,而不是输入整数只会导致异常。我在改变了0到1 randint呼叫过,因为根据你打印的文本,你打算在1到100,而不是0和100之间挑)



Answer 2:

Python不支持goto或任何等效。

你应该想想你可以如何组织使用这些工具的Python做你提供你的程序。 好像你需要使用一个循环来完成你想要的逻辑。 你应该检查出控制流页面获取更多信息。

x = random.randint(0,100)
correct = False
prompt = "Guess the number between 1 and 100: "

while not correct:

  y = int(raw_input(prompt))
  if isinstance(y, int):
    if y == x:
      correct = True
    elif y > x:
      prompt = "Wrong! Try a LOWER number: "
    elif y < x:
      prompt = "Wrong! Try a HIGHER number "
  else:
    print "Try using a integer number"

在其他许多情况下,你会想用一个函数来处理您要使用goto语句的逻辑。



Answer 3:

如有必要,可以使用无限循环,同时还明确突破。

x = random.randint(0,100)

#I want to put a label here
while(True):
    y = int(raw_input("Guess the number between 1 and 100: "))

    if isinstance( y, int ):

    while y != x:
    if y > x:
        y = int(raw_input("Wrong! Try a LOWER number: "))
    else:
        y = int(raw_input("Wrong! Try a HIGHER number "))
    else:
      print "Try using a integer number"

     # can put a max_try limit and break


文章来源: Alternative to Goto, Label in Python?
标签: python goto