Python 如何在列表中使用多个布尔运算符

Python 如何在列表中使用多个布尔运算符,python,Python,我对编码相当陌生,但仍坚持其中一个练习 “编写一个程序,接受DD/MM/YYYY格式的日期,并输出 或者日期无效。例如,1969年7月20日有效,但2012年9月31日无效。“ 我的尝试是: d = int(input("Enter a day")) m = int(input("Enter a month")) y = int(input("Enter a year")) if d > 30 and m == [4, 6, 9, 11]: print("This date i

我对编码相当陌生,但仍坚持其中一个练习

“编写一个程序,接受DD/MM/YYYY格式的日期,并输出 或者日期无效。例如,1969年7月20日有效,但2012年9月31日无效。“

我的尝试是:

d = int(input("Enter a day"))
m = int(input("Enter a month"))
y = int(input("Enter a year"))

if d > 30 and m == [4, 6, 9, 11]:
     print("This date is invalid")

elif d > 31:
     print ("This date is invalid")

elif m != [1,2,3,4,5,6,7,8,9,10,11,12]:
     print ("This date is invalid")

else:
     print("This date is valid")

如果您对如何解决此问题有任何建议,我们将不胜感激。只需修改代码,根据多个选项检查条目
m
的正确实现,如下所示。要检查多个选项,请在中使用
,例如,如果[4,6,9,11]中有m,则使用
,而不是
=

if d > 30 and m in [4, 6, 9, 11]:
     print("This date is invalid")
elif d > 31:
     print ("This date is invalid")
elif m not in [1,2,3,4,5,6,7,8,9,10,11,12]:
     print ("This date is invalid")
else:
     print("This date is valid")

你很接近。只需修改代码,根据多个选项检查条目
m
的正确实现,如下所示。要检查多个选项,请在
中使用
,例如,如果[4,6,9,11]中有m,则使用
,而不是
=

if d > 30 and m in [4, 6, 9, 11]:
     print("This date is invalid")
elif d > 31:
     print ("This date is invalid")
elif m not in [1,2,3,4,5,6,7,8,9,10,11,12]:
     print ("This date is invalid")
else:
     print("This date is valid")

要检查列表中的成员资格,请使用
in
操作符

if d > 30 and m in [4, 6, 9, 11]:

要检查列表中的成员资格,请使用
in
操作符

if d > 30 and m in [4, 6, 9, 11]:

我将使用
datetime
模块的
date
对象。可能是不允许的,但在这里你还必须考虑闰年,等等。一些日历甚至随着时间的推移而改变,这使得很难正确地解析它而不出现任何错误。例如,在公元前8年之前,闰年每三年发生一次。可能还缺少一个事实,即您得到一个字符串,用斜杠分隔,因此您必须将其“拆分”为三部分。请检查此项。我将使用
datetime
模块的
date
对象。可能是不允许的,但在这里你还必须考虑闰年,等等。一些日历甚至随着时间的推移而改变,这使得很难正确地解析它而不出现任何错误。例如,在公元前8年之前,闰年每三年发生一次。可能还缺少一个事实,即你得到一个字符串,用斜线分隔,因此你必须将它“拆分”为三部分。请检查此项。