我决定制作一个简单的python代码,以便轻松获得以m/d/yyyy
格式输入日期的那一天。我使用excel将日期上传到.txt文件中。新的.txt文件包含从1/1/2018
到12/31/2022
的日期,相应的日期以逗号分隔。
该程序运行正常,但需要将近一分钟才能得到结果。如何更改代码以缩短执行时间?
这是我的代码:
def getList():
name = 'Calendar2018.txt'
dates = open(name, 'r')
newList = []
for line in dates:
newList.append(line)
for i in range(0,len(newList)):
newList[i] = newList[i].split(',')
for i in range (0,len(newList)):
for x in range (0,len(newList[i])):
newList[i][x] = (str(newList[i][x]).translate(None,'"')).strip()
return newList
userInp = raw_input("Enter a date: ")
for i in range(0,len(getList())):
if (getList()[i][0]) == userInp:
print userInp + " falls on " + getList()[i][1] + "."
答案 0 :(得分:3)
问题是您一次又一次地呼叫getList
。相反,调用它一次并将结果存储在列表中:
all_the_dates = getList()
userInp = raw_input("Enter a date: ")
for i in range(0,len(all_the_dates)):
if (all_the_dates[i][0]) == userInp:
print userInp + " falls on " + all_the_dates[i][1] + "."
或更短,直接迭代列表而不是使用range
索引:
for date, weekday in all_the_dates:
if date == userInp:
print userInp + " falls on " + weekday + "."
话虽如此,你根本不需要那个“日历”文件。只需使用Python的datetime.date
API和strftime
即可获得工作日。
>>> import datetime
>>> userinp = "2/1/2018"
>>> m,d,y = map(int, userinp.split("/"))
>>> datetime.date(y, m, d).strftime("%A")
'Thursday'