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

Python计算器无法接受两位数及以上数值的问题求助

解决计算器无法处理多位数输入的问题

问题原因

你代码里的num1, figure, num2 = input()是直接将输入字符串按单个字符拆分后解包。比如输入10+5,字符串会被拆成['1','0','+','5'],元素数量远超过3个,自然会抛出too many values to unpack (expected 3)错误。

解决方案

方案1:要求用户用空格分隔输入(简单易实现)

修改输入处理部分,用split()方法按空格拆分输入内容,只要输入格式是数字 运算符 数字(比如10 + 5),就能正确提取三个部分:

print("##Write your forumla below: #############")
print("##Operators to choose from are + - * / ##")
# 修改输入处理逻辑
user_input = input().split()
num1, figure, num2 = user_input
Calculator(int(num1), figure, int(num2))

方案2:自动识别运算符,支持无空格输入(更友好)

如果想让用户直接输入10+5这类格式的表达式,可以遍历输入字符串找到运算符的位置,再拆分出前后的数字,同时额外处理异常情况让程序更健壮:

def Calculator(num1, figure, num2):
    if figure == "+":
        total = num1 + num2
    elif figure == "/":
        # 新增除零判断
        if num2 == 0:
            print("错误:除数不能为0")
            return
        total = num1 / num2
    elif figure == "-":
        total = num1 - num2
    else:
        total = num1 * num2
    print(total)

print("##Write your forumla below: #############")
print("##Operators to choose from are + - * / ##")

user_input = input().strip()
operators = '+-*/'
op_index = None
figure = None

# 遍历输入字符串找运算符
for i, char in enumerate(user_input):
    if char in operators:
        op_index = i
        figure = char
        break

if op_index is not None:
    try:
        num1 = int(user_input[:op_index])
        num2 = int(user_input[op_index+1:])
        Calculator(num1, figure, num2)
    except ValueError:
        print("错误:请输入有效的数字")
else:
    print("错误:请输入有效的运算符(+ - * /)")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 12:30:42