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

基础计算器功能异常求助:代码无输出且未调用指定函数

解决你的基础计算器无输出/函数不执行问题

你的代码里存在几个关键逻辑和语法问题,导致程序没按预期运行,我来逐个拆解并给你修正方案:

主要问题分析

  • 无用的类定义:你写了calculator_class但完全没实例化它,而且类内部直接写print语句——这些print会在类定义时就执行,但这根本不是类的正确用法,反而打乱了程序流程,这里完全不需要类。
  • 执行顺序颠倒:你先调用了userchoice(),但此时usernumber1和usernumber2还没让用户输入,就算走到运算函数那一步,也会因为找不到变量报错。
  • userchoice函数语法错误:return后面直接跟if分支是非法语法,return只能返回值,不能直接嵌套代码块;而且你判断乘法/除法时用了小写(multiplication/division),但提示用户输入的是大写开头的选项,会导致匹配失败。
  • 函数拼写错误:乘法函数定义写成了multipliction(少了一个字母i),调用时却用的是multiplication,会触发"找不到函数"的错误。
  • 冗余逻辑:invalid_choice本身已经包含print语句,你还用print(invalid_choice()),会额外输出一个None(因为函数没有返回值)。

修正后的完整代码

print("欢迎来到我的基础计算器程序")
print("在本程序中,您将先被要求输入想要执行的运算功能,")
print("然后选择两个数字,程序会对这两个数字执行相应的数学运算")

# 获取用户选择的运算类型
def get_operation():
    print("请输入以下选项选择运算功能:")
    print("Addition(加法)")
    print("Subtraction(减法)")
    print("Multiplication(乘法)")
    print("Division(除法)")
    # 循环直到用户输入有效选项
    while True:
        choice = input().strip()
        if choice in ["Addition", "Subtraction", "Multiplication", "Division"]:
            return choice
        else:
            print("您未选择有效选项,请重试")

# 获取用户输入的两个数字
def get_calc_numbers():
    print("请选择两个数字进行计算")
    num1 = int(input("请输入第一个数字:"))
    num2 = int(input("请输入第二个数字:"))
    return num1, num2

# 运算函数,接收数字作为参数(避免全局变量依赖)
def addition(num1, num2):
    print("A D D I T I O N(加法)")
    print("正在计算...")
    return num1 + num2

def subtraction(num1, num2):
    print("S U B T R A C T I O N(减法)")
    print("正在计算...")
    return num1 - num2

def multiplication(num1, num2):
    print("M U L T I P L I C A T I O N(乘法)")
    print("正在计算...")
    return num1 * num2

def division(num1, num2):
    print("D I V I S I O N(除法)")
    print("正在计算...")
    # 增加除数不为0的判断,避免运行时错误
    if num2 == 0:
        return "错误:除数不能为0"
    return num1 / num2

# 主程序流程
if __name__ == "__main__":
    selected_op = get_operation()
    num1, num2 = get_calc_numbers()
    
    # 根据选择执行对应运算
    if selected_op == "Addition":
        result = addition(num1, num2)
    elif selected_op == "Subtraction":
        result = subtraction(num1, num2)
    elif selected_op == "Multiplication":
        result = multiplication(num1, num2)
    elif selected_op == "Division":
        result = division(num1, num2)
    
    print(f"计算结果:{result}")

修正说明

  1. 重新梳理了程序流程:先选运算类型→再输入数字→最后执行计算,完全符合你预期的逻辑。
  2. 去掉了无用的类,用函数拆分功能,代码结构更清晰易维护。
  3. 运算函数改为接收参数传递,避免全局变量依赖,更符合Python编码规范。
  4. 增加了循环判断用户输入的运算类型,确保用户输入有效选项后才继续。
  5. 修复了拼写错误,统一了选项的大小写匹配规则。
  6. 给除法增加了除数不为0的判断,避免程序崩溃。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 08:13:14