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
相关产品推荐
相关产品推荐

