Python基为10的int()的文本无效:“+”

2024-05-06 08:07:08 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,赋值是让函数“compute”求解它并返回值。如果给定的sting不是有效的公式,则返回“None”

def compute(side):
    val=int(side[0])
    lastop=0
    for i in range(1,len(side)):
        if side[i].isdigit():
            if lastop=='+':
                val+=int(side[i])
            elif lastop=='-':
                val-=int(side[i])
            elif lastop=='x':
                val*=int(side[i])
            elif lastop=='/':
                val/=int(side[i])
        else:
            lastop=side[i]
    return val

因此,此时将返回值。但是,如果函数是为(“22-11x4”)运行的,它将给出0而不是44。我把它们变成了整数,为什么它们仍然给我错误的值?

def evaluate():
    val=int(side[0])
    lastop=0
    for i in range(1,len(side)):
        if side[i].true():
            print('Congrats')
        elif side[i].false():
            print('Try again')

当它到达这个求值函数时,它给出了一个错误“invalid literal for int(),以10为基数:'+'”,我不太清楚这意味着什么以及如何解决。

def solve():
    pass

这个函数“solve”是在我修复了之前函数中的问题之后,我稍后要用到的。你知道吗

def main():
    print("22-11x4 =", compute("22-11x4"),"(expect 44)")
    print("+11x4 =", compute("+11x4"),"(expect None)")
    print("22-11x4 ?= 7x5+9", evaluate("22-11x4=7x5+9"),"(expect True)")
    print("solving 288/24x6=18x13x8 :", solve("288/24x6=18x13x8"))

main()

Tags: 函数noneforifdefvalsideexpect
1条回答
网友
1楼 · 发布于 2024-05-06 08:07:08

您编写的compute函数按数字执行操作,而且您忘记执行for完成后的最后一个操作:

2 - 1 - 1 x 4 = 0

这就是为什么你从函数中得到这个返回

下面是正确的函数

def compute(side):
    val = 0
    buf = 0
    lastop = '+'
    for i in range(0, len(side)):
        if side[i].isdigit():
            buf = buf * 10 + int(side[i])
        else:
            val = op(val, buf, lastop)
            lastop = side[i]
            buf = 0
    val = op(val, buf, lastop)
    return val


def op(val, buf, lastop):
    if lastop == '+':
        val += buf
    elif lastop == '-':
        val -= buf
    elif lastop == 'x':
        val *= buf
    elif lastop == '/':
        val /= buf
    return val

同样在测试字符串中:

print("+11x4 =", compute("+11x4"),"(expect None)")

你为什么不指望呢?应该是44?你知道吗

这个功能还可以改进,但我没有时间去做。不管怎样,它是有效的。你知道吗

相关问题 更多 >