You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python计算器程序实现重复运行:解决goto未定义错误

问题描述

我正在编写一个计算器程序,希望在程序结束时提供选项,让用户选择重新运行程序或关闭程序。我原以为Python有goto函数,但实际上它并不存在。

我的尝试代码:

if operator == "+":
    answer = number1 + number2
    print("") # 换行
    print(f"the answer is {answer}")
    
redoq=input(print("would you like to redo? (y/n):"))
if redoq == "y" or "Y":
    goto(start)

if redoq == "n" or "n":
    print("Okay! This window will now close.")
    time.sleep(5)

出现的问题:

"goto" is not defined

解决方法

Python确实没有内置的goto语句,替代方案是用循环或者函数封装实现重复运行逻辑,同时还要修正你代码里的其他错误:

1. 先修正输入和条件判断的问题

  • input(print(...))是错误写法:print会返回None,直接把提示字符串传给input即可
  • if redoq == "y" or "Y"逻辑不成立:Python会解析成(redoq == "y") or "Y",非空字符串"Y"永远为真,应该统一转小写后判断

2. 用while循环实现重复运行(推荐)

把计算器核心逻辑放进while循环,通过用户选择控制循环是否继续:

import time

while True:
    # 补充完整的计算器输入逻辑
    number1 = float(input("输入第一个数字: "))
    operator = input("输入运算符(+,-,*,/): ")
    number2 = float(input("输入第二个数字: "))
    
    if operator == "+":
        answer = number1 + number2
        print("") # 换行
        print(f"结果是 {answer}")
    # 这里可以补充其他运算符的判断逻辑...
    
    # 询问是否重新计算
    redoq = input("是否要重新计算?(y/n): ").strip().lower()
    if redoq == 'n':
        print("好的!窗口将在5秒后关闭。")
        time.sleep(5)
        break # 退出循环,结束程序
    # 输入y的话,循环自动回到开头重新运行

3. 函数封装的方式(可选)

把计算器逻辑封装成函数,通过递归调用实现重复运行:

import time

def calculator():
    # 计算器核心逻辑
    number1 = float(input("输入第一个数字: "))
    operator = input("输入运算符(+,-,*,/): ")
    number2 = float(input("输入第二个数字: "))
    
    if operator == "+":
        answer = number1 + number2
        print("") # 换行
        print(f"结果是 {answer}")
    # 其他运算符逻辑...
    
    redoq = input("是否要重新计算?(y/n): ").strip().lower()
    if redoq == 'y':
        calculator() # 递归调用,重新运行程序
    else:
        print("好的!窗口将在5秒后关闭。")
        time.sleep(5)

# 启动程序
calculator()

注意:递归方式如果用户多次选择重新运行,可能触发栈溢出,因此更推荐用while循环的方案。

内容的提问来源于stack exchange,提问作者user22936938

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 14:35:12