我用Python编写了一个非常基本的脚本(我是新手),我不知道';我不知道为什么它不能正常工作

我用Python编写了一个非常基本的脚本(我是新手),我不知道';我不知道为什么它不能正常工作,python,python-3.8,Python,Python 3.8,问题出现在第19行,其中的if条件为 因此,当您运行代码时,它应该要求您输入第一个数字,然后是数学运算(+,加号或-),最后是第二个数字 当你加(加)时,它工作得很好,但是当你尝试减法时,它会显示消息“Invalid Operation”,我已经尝试过使用其他逻辑运算符,但它就是不工作D: 请告诉我有什么问题,因为我看不到 minus = ["-","minus"] plus = ["+", "plus"] print(""" ===========================

问题出现在第19行,其中的
if
条件为

因此,当您运行代码时,它应该要求您输入第一个数字,然后是数学运算(+,加号或-),最后是第二个数字

当你加(加)时,它工作得很好,但是当你尝试减法时,它会显示消息“Invalid Operation”,我已经尝试过使用其他逻辑运算符,但它就是不工作D:

请告诉我有什么问题,因为我看不到

minus = ["-","minus"]
plus = ["+", "plus"]

print("""
    ===========================
            CALCULATOR
    ===========================

    1      2      3      +
    4      5      6      -
    7      8      9

    0      Total:
    ===========================
    ===========================
    """)
n1 = int(input("First Number: "))
operation = input("+ or - ")
if operation not in (minus,plus):
    print("Invalid Operation")
else:

    n2 = int(input("Second Number: "))

    if operation in minus:
        total_minus = n1-n2
        print(f"""
    ===========================
            CALCULATOR
    ===========================

    1      2      3      +
    4      5      6      -
    7      8      9

    0      Total: {total_minus}
    ===========================
    ===========================
        """)
    elif operation in plus:
        total_plus = n1 + n2
        print(f"""
    ===========================
            CALCULATOR
    ===========================

    1      2      3      +
    4      5      6      -
    7      8      9

    0      Total: {total_plus}
    ===========================
    ===========================
        """)




您通过形成元组来连接列表:

if operation not in (minus, plus):
实际上,您要做的是将列表添加到一起:

if operation not in minus + plus:
操作不在(减,加)
将始终为真<代码>操作是一个字符串,
(减,加)
是一个包含两个列表的元组

如果要测试字符串
操作
是否在
列表或
列表中,可以使用:

if operation not in (minus + plus):

对我来说,你的代码不能与+或-! 我不知道为什么它对+有效,因为我认为它不应该

你是对的,问题在于你的if语句。 当你写作时:

if operation not in (minus,plus):
您的意思是“如果运算不等于[“-”、“减”]或[“+”、“加”]”

换句话说,您正在将用户的输入与包含2个字符串的列表进行比较

你可以改为写:

if operation not in minus and operation not in plus:

您的程序将正常运行

表达式
操作不在(减,加)
正在测试
操作
是否是元组
列表中的一个。因为它是一个字符串,所以它永远不会是这些值中的任何一个

我建议创建一个有效操作的组合列表

valid_operations = minus + plus # concatenate valid operations
然后测试用户输入的操作是否在该列表中

if operation not in valid_operations:
    print("Invalid Operation")
else:
    ...

通过这种方式,您可以轻松地将计算器扩展到乘法、除法等运算。

只需更改if代码块即可

if operation in plus or operation in minus:
    your code
else:
    print("Invalid Operation")
你写道:

if operation not in (minus,plus):
    your code

这将始终是真的,因为
操作
永远不会同时出现在两个列表中(加号和减号),因此该语句为False,并且由于您编写了“not in”,not of False为True,这就是您在if块中总是得到“无效操作”的原因。

减号
加号
都是列表。为了匹配,你要测试的东西也必须是一个列表。我不知道这对plus是如何起作用的,正如所说的。谢谢兄弟,这其实很简单,我有点傻哈哈