我正在尝试制作一个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)。”
答案 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
-=-=-=-=-=-=-=-=-=-=-=-