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