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

