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

Python编写简易计算器触发SyntaxError语法错误该如何解决?

语法错误触发原因

你提到的第13行SyntaxError由三个问题共同导致:

  • 缩进不匹配:Python要求同分支的if、elif必须保持相同缩进层级,你的代码中每个elif都比上一级判断多缩进了若干空格,完全不符合语法规则。
  • 未定义变量问题:add、subtract、multiply、divide都是你要匹配的字符串,你没有给它们加引号,Python会将其识别为未声明的变量直接报错。
  • 值比较语法错误:判断字符串内容相等应该用==运算符,is运算符用来判断两个变量的内存地址是否一致,不适合做输入内容匹配。

其他需要修复的运行问题
  • 第elif Choice is multiply行末尾遗漏了语法要求的冒号:
  • try和except缩进层级不匹配,except必须和对应的try保持同级缩进
  • print(answer)写在分支判断外,如果用户输入的操作不属于四个指定选项,answer变量未定义会触发NameError
  • 未处理除零异常,若输入的第二个数字为0,除法运算会直接崩溃,当前的异常提示会误导用户以为是数字输入格式错误
  • 用户输入的操作选项可能携带多余空格,建议做去空格处理避免匹配失败

修正后可运行代码
# 读取输入数字
number1 = input('What is the first number?\n')
number2 = input('What is the second number?\n')
# 读取操作类型,去除首尾空格
Choice = input('Would you like to add, subtract, multiply or divide?\n').strip()

try:
    # 转换数字为浮点型
    num1 = float(number1)
    num2 = float(number2)
    # 分支判断运算类型
    if Choice == 'add':
        answer = num1 + num2
    elif Choice == 'subtract':
        answer = num1 - num2
    elif Choice == 'divide':
        if num2 == 0:
            print('Error: 除数不能为0')
            exit()
        answer = num1 / num2
    elif Choice == 'multiply':
        answer = num1 * num2
    else:
        print('Error: 请输入指定的操作类型:add/subtract/multiply/divide')
        exit()
    # 输出结果
    print(answer)
except ValueError:
    print('Please choose proper numbers in numeric form instead of letter/words')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 00:45:03