为什么我的Python计算器不能接受大于一位数的值?

5us2dqdw  于 2023-01-04  发布在  Python
关注(0)|答案(2)|浏览(120)

所以我试着做了一个Python计算器,最近开始研究这种语言。下面是我做的代码:

#Calculator v2

def Calculator(num1, figure, num2):
    if figure == "+":
        total = num1 + num2

        print(total)
    elif figure == "/":
        total = num1 / num2

        print(total)
    elif figure == "-":
        total = num1 - num2

        print(total)
    else:
        total = num1 * num2

        print(total)

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

num1, figure, num2 = input()
Calculator(int(num1), figure, int(num2))

为什么输入不接受大于9的数字?一旦他们得到两位数,它抛出以下错误代码:
“要解包的值太多(应为3)”
有人能帮忙吗?:)

s1ag04yj

s1ag04yj1#

错误位于:

num1, figure, num2 = input()

这里假设您有正好3个字符。num1将是第一个,figure是第二个,num2是第三个。
您可以改用re.split

import re

num1, figure, num2 = re.split('([+-/*])', input())

输入示例:

12*45

输出:

['12', '*', '45']
jvlzgdj9

jvlzgdj92#

这并不是说你的应用不能接受超过1位数的数字,问题是:
当调用input()时,你接受一个字符串输入。
使用

num1, figure, num2 = input()


Python会尝试将输入分解为3个参数,但例如22不能分解为3个参数,只能分解为2个。
你可以采取不同的方法
可以使用空格拆分公式

formula = input() # 22 + 10
num1, op, num2 = formula.split(' ') # ('22','+','10')

另一种选择是自己解析公式,并通过op字符将公式分解,然后验证是否具有有效的公式结构

相关问题