if AMPM is not "AM" or AMPM is not "PM":
AMPM = input('You entered an incorrect value for AMPM. Please, try again: ')
它完全忽略了"不是"部分。我已经尝试过了!=我得到了相同的结果,它只是继续if语句。难道我做错了什么?
答案 0 :(得分:4)
表达式是完全错误的,但无论如何我会建议更惯用的方法:
if AMPM not in ('AM', 'PM'):
# statement
通过这种方式,如果AMPM
恰好设置为" foo"
答案 1 :(得分:0)
因为AMPM不能兼顾" AM"和" PM",将始终运行输入语句。您应该使用and
代替or
。此外,您应该使用!=
而不是is not
。虽然is not
在某些情况下会因字符串实习而起作用。
答案 2 :(得分:0)
我修好了!概要:
它看到AMPM是,所以没关系。然后它看到AMPM不是PM,所以它继续。这是我的解决方案:
if AMPM != "AM":
if AMPM != "PM":
AMPM = input('You entered an incorrect value for AMPM. Please, try again: ')
答案 3 :(得分:0)
查看完整代码,您有以下内容:
if AMPM == "Am" or AMPM == "am":
AMPM = "AM"
if AMPM == "Pm" or AMPM == "pm":
AMPM = "PM"
if AMPM is not "AM" or AMPM is not "PM":
AMPM = input('You entered an incorrect value for AMPM. Please, try again: ')
您已经检查了上面所需的一切!您询问的部分是您在其他所有方法都失败时要执行的操作。这就是else
子句的用途。因此,您可以修复代码(并使其更加干净和可读),如下所示:
if AMPM == "Am" or AMPM == "am":
AMPM = "AM"
elif AMPM == "Pm" or AMPM == "pm":
AMPM = "PM"
else:
AMPM = input('You entered an incorrect value for AMPM. Please, try again: ')
如果这是新的 - elif
表示'else-if'。如果第一个if
被评估为false,程序将检查其后的elif
。如果所有子句都为假,则执行else
部分。