问题描述
import datetime
Now = datetime.datetime.Now()
if Now.day == Tuesday :
print ('yes it is tuesday')
else :
print ('no')
我尝试这样做,但是在python中出现错误:
Traceback (most recent call last):
File "C:/Users/Yarlagadda/Desktop/test2.py",line 4,in <module>
if Now.day == Tuesday :
NameError: name 'Tuesday' is not defined
>>>
我想知道错误
解决方法
您的代码有两个问题。
第一个是错误代码告诉您Tuesday
不作为变量存在,因为您没有将其设为字符串。因此,将其周围的'Tuesday'
更改为'
。
第二个原因是now.day
将返回一个数字而不是一个字符串日。
编辑:感谢@Tomerikoo指出此操作返回的是月中的某天,而不是星期几。将其更改为now.weekday()
,以获取星期几。
要解决此问题,您可以比较if
语句中的数字1而不是单词Tuesday,也可以将数字映射到单词。将数字映射到单词是首选方法,因为它更易于维护且不那么混乱。
注意: now.weekday()
中的星期几将被编号为0-6,其中0为星期一,6为星期日。
我在这里使用一个元组,但是您可以使用一个列表,或者如果您真的很喜欢,可以使用字典。但是,字典是一种矫kill过正,并且列表附带了不需要的内存开销。
映射:
week_days = ("Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday")
最终密码
import datetime
week_days = ("Monday","Sunday")
now = datetime.datetime.now()
day = week_days[now.weekday()] # Note the change to now.weekday()
if day == 'Tuesday' :
print ('yes it is tuesday')
else :
print ('no')
,
如果条件是星期二不用作字符串,则会出现错误。将周二替换为'Tuesday'
,您的代码可以正常工作。
为了增强功能,您还可以使用列表或元组保留工作日。
import datetime
now = datetime.datetime.now()
if now.day == 'Tuesday':
print ('yes it is tuesday')
else:
print ('no')