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