如何在Python脚本的else语句执行后返回脚本顶部?
让Python脚本在else分支执行后回到开头的实现方法
你的核心需求是在用户输入无效操作时,回到脚本开头重新选择。解决这个问题最直接的方式是用循环结构,同时还要修复原代码里的潜在问题:如果走else分支,result变量未定义,后续执行除法会触发NameError。
基础修复版代码
while True: print('lets do some math!') math_operation = input('Which would you like to start with, addition, subtraction or division? ') if math_operation == "addition": input_add1 = int(input('First number please ')) input_add2 = int(input('Second number please ')) result = input_add1 + input_add2 print(f'{input_add1} + {input_add2} = {result}') break # 输入有效,跳出循环执行后续除法 elif math_operation == "subtraction": input_sub1 = int(input('First number please ')) input_sub2 = int(input('Second number please ')) result = input_sub1 - input_sub2 print(f'{input_sub1} - {input_sub2} = {result}') break # 输入有效,跳出循环执行后续除法 else: print('I did not quite get that, lets try again') # 无break/continue,循环自动回到开头重新执行 # 仅当输入有效操作后,才会执行到这里 input_div = int(input('now provide a number that is divisible from the answer')) answer = result / input_div print(answer)
关键逻辑说明
- 用
while True创建无限循环,把操作选择的逻辑全部包裹进去。 - 用户输入有效操作时,执行完计算后用
break跳出循环,继续执行除法逻辑。 - 输入无效时,else分支打印提示后,循环自动回到开头,重新让用户输入。
- 彻底避免了
result未定义的问题,因为只有输入有效操作时才会赋值result并进入后续流程。
进阶循环版(支持多次计算)
如果希望用户完成一次计算后能重新开始整个流程,可以把除法逻辑也放进循环,再加一个继续判断:
while True: print('lets do some math!') math_operation = input('Which would you like to start with, addition, subtraction or division? ') result = None if math_operation == "addition": input_add1 = int(input('First number please ')) input_add2 = int(input('Second number please ')) result = input_add1 + input_add2 print(f'{input_add1} + {input_add2} = {result}') elif math_operation == "subtraction": input_sub1 = int(input('First number please ')) input_sub2 = int(input('Second number please ')) result = input_sub1 - input_sub2 print(f'{input_sub1} - {input_sub2} = {result}') else: print('I did not quite get that, lets try again') continue # 直接回到循环开头 # 执行除法 input_div = int(input('now provide a number that is divisible from the answer')) answer = result / input_div print(answer) # 询问是否继续 again = input('Do you want to do more math? (yes/no): ') if again.lower() != 'yes': break
内容的提问来源于stack exchange,提问作者Nick Trader
相关产品推荐
相关产品推荐

