编写以天为单位的天数程序,以便该程序提示用户输入文件名并从文件中读取日期。
文件中的日期以dd.mm.yyyy格式写入。该程序在每一行中查找月份(提示:使用拆分),并打印出该月份的天数。
重写该函数,使其不包含用于返回天数的条件(if)语句。该功能应使用列表来完成。不要添加a年支票(假设2月有28天)。
我有此代码:
dates = {}
file = input("Enter file name:")
file = open("dates.txt", "r")
for line in file:
month = line.split(".")
dates = month[1]
print (dates)
但是它仅从文本文件中读取月份。如何在此代码内添加另一个公式以读取月份并声明日期,而不使用“ IF”?
答案 0 :(得分:0)
由于这行而只读了几个月:
dates = month[1]
从split
创建的数组中选择索引1处的数组元素。由于数组索引从0开始计数,因此这是第二个元素,即月份(根据指定的日期格式)。您可以使用月份编号索引到列表中,以获取该月份的天数,例如daysInMonth[dates]
,其中已预定义了daysInMonth
。该定义应该在使用任何时间之前进行,并且只需定义一次即可,因此可以在任何循环之外进行定义。
如果将变量名dates
和month
交换,您的代码可能更易读。
答案 1 :(得分:0)
您可以编写字典dictDates = {1:31,2:28,3:31,4:30,...}或listDates = list [31,28,31,30,...] < / p>
然后从月份中获得dictDates [date]或listDates [date-1]的天数的值
[使用完整代码编辑]
file = input("Enter file name: ")
file = open("dates.txt", "r")
dictDates={'1':31, '2':28, '3':31, '4':30, ...}
for line in file:
month = line.split(".")[1]
print(dictDates[month])
答案 2 :(得分:0)
您可以将月份名称(或数字值)映射到与该月份中的天数关联的数字。所以像
monthToDay = {1: 31, 2: 28, 3: 31, 4: 30, 5: 31, 6: 30, 7: 31, 8: 31, 9: 30, 10: 31, 11: 30, 12: 31}
然后,每个月中的天数就是字典中月位置处的值。
monthToDay[date]