Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从Python';Datetime对象是什么?_Python_Python 3.x_Datetime_Dictionary_Keyerror - Fatal编程技术网

如何从Python';Datetime对象是什么?

如何从Python';Datetime对象是什么?,python,python-3.x,datetime,dictionary,keyerror,Python,Python 3.x,Datetime,Dictionary,Keyerror,所以我刚开始学习python,并尝试制作一个程序,告诉你某一天的每一天。我发现了datetime并尝试使用它,但问题是,即使存在密钥,我也会收到密钥错误 这是我的密码: import datetime def day_finder(dd,mm,yy): tags = { '1' : 'Monday' ,'2' : 'Tuesday' ,'3' : 'Wednesday' ,'4' : 'Thursday' ,'5' : 'Friday' ,'6' : 'Saturday' ,'7'

所以我刚开始学习python,并尝试制作一个程序,告诉你某一天的每一天。我发现了
datetime
并尝试使用它,但问题是,即使存在密钥,我也会收到密钥错误

这是我的密码:

import datetime

def day_finder(dd,mm,yy):

    tags = { '1' : 'Monday' ,'2' : 'Tuesday' ,'3' : 'Wednesday' ,'4' : 'Thursday' ,'5' : 'Friday' ,'6' : 'Saturday' ,'7' : 'Sunday' }
    return tags[int(datetime.datetime(yy,mm,dd).isoweekday())]


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

print (day_finder(d,m,y))

您正在搜索一个
int
工作日编号,但是您应该检查字符串,因为字典中的键属于
str
类型。例如:

>>> tags = { '1' : 'Monday' ,'2' : 'Tuesday' ,'3' : 'Wednesday' ,'4' : 'Thursday' ,'5' : 'Friday' ,'6' : 'Saturday' ,'7' : 'Sunday' }

>>> import datetime
>>> tags[str(datetime.datetime(1990,03,28).isoweekday())]
'Wednesday'
但是,您不需要使用
dict
对象来获取基于关键天数的工作日名称。您可以通过在
datetime
对象上使用
.strftime('%A')
获得所需的结果,如下所示:

>>> datetime.datetime(1990,03,28).strftime("%A")
'Wednesday'

标记
对象中的
str
值,但是您将它们转换为
int
(它们已经存在),然后尝试通过
int
值访问值,这就是为什么您会得到
KeyError

修复方法是将它们转换为
str
,一切都会正常工作

return tags[str(datetime.datetime(yy,mm,dd).isoweekday())]

isoweekday
返回一个整数。你字典的键是字符串


您不需要对结果调用
int
,因为它已经是一个int-可以将其替换为
str
,或者使用整数作为dict的键。

在查找时尝试字符串而不是整数

return tags[str(datetime.datetime(yy,mm,dd).isoweekday())]

您正在将一天中的一周转换为int,其中字典的键显然是字符串。这就是为什么error最简单的方法是只使用input()而不是int(input())如果我使用input(),它将给出typeerror如果我删除dict中的“”它将把它们转换成整数?