我刚刚开始,无法解决这个问题。
我正在写一个程序,在学校为我做一些简单的计算。
通过输入从1到X的简单数字,可以访问不同的计算。每个数字都会调用一个函数来进行计算。
我的问题是: 我希望如果用户在提示输入数字时输入空字符串,程序将要求用户在关闭之前重新输入一定数量的数字。这是我的代码:
def pick_procedure():
procedure = raw_input("> ")
if not procedure:
counter = 0
print "Enter a value. "
while counter <4:
counter = counter + 1
main()
if counter == 4:
break
def main():
print "\nStudy helper 1.0.\n"
print """Procedure list:
1.Area of circle.
2. Circumference of a circle.
Please pick a procedure: """
pick_procedure()
main()
无论输入空字符串多少次,程序都不会关闭。
如何正确清洁?
答案 0 :(得分:1)
正如您所说,您需要重新组织代码:
def pick_procedure(valid_choices):
print "Enter a value. "
for _ in range(4): # prompt for a choice up to 4 times
choice = raw_input("> ")
if choice in valid_choices:
return choice
return None # A valid choice was not entered
def main():
print "\nStudy helper 1.0.\n"
choice = 1
while choice:
print """Procedure list:
1. Area of circle.
2. Circumference of a circle.
Please pick a procedure: """
choice = pick_procedure(["1", "2"])
if choice:
print "Doing choice", choice
main()
以下方法使用while choice
循环来保持提示是否输入了有效选项。如果没有输入4
次选项,pick_procedure()
函数将返回None
,导致while
循环干净地退出。如果输入了有效选项,则返回该选项。
我还传递了对函数的有效响应列表,这样就可以通过传递不同的有效响应列表将函数用于其他问题。
答案 1 :(得分:0)
你创造了一个恶性循环。
第一次该过程为false时,pick_procedure再次调用main,然后再调用main调用pick_procedure。它继续递归。
如果您只想在触发事件时完成程序,可以使用sys.exit(0)并解决问题。