比较两个整数时,if语句不起作用

时间:2019-05-29 16:27:29

标签: python python-3.x if-statement

我正在尝试制作一个python排序计算器,该计算器允许输入任意数量的数字,并且它会检查第二个“单词”是否为运算符,但是在比较总和的长度和索引时当前正在检查“字”以查看是否应打印输出,但是即使两个整数相同也不会。

operators = ["+", "-", "/", "*"]

def doSum(sum):
    split = sum.split()
    target = len(split)
    if split[1] in operators and "=" not in "".join(split):
        for WORD in split:
            if split.index(WORD) % 2 != 0:
                if WORD in operators:
                    if int(split.index(WORD)) == int(target):
                        print(eval("".join(split)))
                    else:
                        print(target)
                        print(len(split))
                        print("-=-=-=-=-=-=-=-=-=-=-=-")

doSum("1 + 2")
doSum("3 + 3")
doSum("8 - 4")
doSum("1 + 3 + 3 - 1")

问题行是第10-15行。 我期望输出为:     3     6     4     6 但是我得到了:

3
3
-=-=-=-=-=-=-=-=-=-=-=-
3
3
-=-=-=-=-=-=-=-=-=-=-=-
3
3
-=-=-=-=-=-=-=-=-=-=-=-
7
7
-=-=-=-=-=-=-=-=-=-=-=-
7
7 
-=-=-=-=-=-=-=-=-=-=-=-
7
7
-=-=-=-=-=-=-=-=-=-=-=-

我用于调试的“ else块”中

编辑:

感谢@chepner在评论中提供答案:

“您的if条件永远不会为真,因为split的索引从0到len(split)-1,目标== len(split)。”

1 个答案:

答案 0 :(得分:0)

尝试一下

import ast

>>> def doSum(sum1):
    print(ast.literal_eval(sum1))
    print('-=-=-=-=-=-=-=-=-=-=-=-')


>>> doSum("1 + 2")
3
-=-=-=-=-=-=-=-=-=-=-=-
>>> doSum("3 + 3")
6
-=-=-=-=-=-=-=-=-=-=-=-
>>> doSum("8 - 4")
4
-=-=-=-=-=-=-=-=-=-=-=-
>>> doSum("1 + 3 + 3 - 1")
6
-=-=-=-=-=-=-=-=-=-=-=-