python如何转到/重做

python如何转到/重做,python,Python,我在函数filter3中有一行,它是我通过一个shuffle函数创建的dict answer = shuffle(filter3) print(answer) userConfirm() 我想做的是实现我的userConfirm()函数,如果用户对输出不满意,他们会选择“N”,这样会使答案再次出现 只是不确定在我的函数中输入什么“N”响应来实现这一点 import sys def userConfirm(): """get user confirmation to proceed"

我在函数filter3中有一行,它是我通过一个shuffle函数创建的dict

answer = shuffle(filter3)
print(answer)
userConfirm()
我想做的是实现我的userConfirm()函数,如果用户对输出不满意,他们会选择“N”,这样会使答案再次出现

只是不确定在我的函数中输入什么“N”响应来实现这一点

import sys


def userConfirm():
    """get user confirmation to proceed"""
    userChoice = raw_input("Are you happy with results? (Y or N or Q): ")
    if userChoice == "N":
        #What to do here
    elif userChoice == "Q":
        sys.exit("You Quit the Program")
    elif userChoice == "Y":
        print("OK Proceeding")

自60年代末以来,goto被认为是有害的。谷歌“goto被认为是有害的”,Dijkstra有一篇关于这个话题的文章,这篇文章非常有名,以至于“被认为是有害的”这个短语现在经常被重复用于类似的话题

原因很简单:使用
goto
可以创建难以理解、难以调试和难以扩展的代码

使用合适的循环来满足您的需求。重新思考您的问题,从“我想在这个条件下返回”到“我想重复这个过程,直到这个条件得到满足”。然后将其作为循环来编写会更容易、更自然

不幸的是,Python没有
repeat
,直到最后进行循环测试。只有
for
循环(用于要执行的特定迭代列表)和
while
循环在开始时测试,而不是在结束时测试。但是您可以使用
while True来进行此操作,并在最后自己进行显式测试:

while True:
  do_something()
  if break_condition:
    break
您的第二个问题(仅在问题下方的注释中给出)可以通过让
userConfirm()
返回一个值来解决,该值说明用户是否希望重复:

def userConfirm():
  """get user confirmation to proceed"""
  userChoice = raw_input("Are you happy with results? (Y or N or Q): ")
  if userChoice == "N":
    return False
  elif userChoice == "Q":
    sys.exit("You Quit the Program")
  elif userChoice == "Y":
    print("OK Proceeding")
    return True

while True:
  do_something()
  if userConfirm():
    break

goto在现代编程语言出现后一直被认为是一种糟糕的编程实践。调试、跟踪bug/错误甚至试图理解几个月前你到底写了什么变得很困难(特别是当你的程序处理多个嵌套的if/else语句或循环时)。解决问题而不使用“转到”的最佳方法是精心组织程序。抓起一张纸,设计结构。现在,在您有了一个具有良好逻辑的具体计划之后,开始编码。必要时使用循环、BREAK和CONTINUE语句。这些简单的技巧/方法将帮助您构建简洁的程序,并使您免于头痛。正如他们所说的“数周的编码可以为您节省数小时的文书工作”。

您知道循环是什么,对吗?使用一个…@l4mpi是的,这就是我所做的,但是我想把这两个函数的逻辑分开,这样我就可以在程序的其他地方使用userConfirm()函数
def userConfirm():
  """get user confirmation to proceed"""
  userChoice = raw_input("Are you happy with results? (Y or N or Q): ")
  if userChoice == "N":
    return False
  elif userChoice == "Q":
    sys.exit("You Quit the Program")
  elif userChoice == "Y":
    print("OK Proceeding")
    return True

while True:
  do_something()
  if userConfirm():
    break