从文本文件中查找月份中的天数,而无需使用“ if”

时间:2018-10-23 15:04:03

标签: python

编写以天为单位的天数程序,以便该程序提示用户输入文件名并从文件中读取日期。

文件中的日期以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”?

3 个答案:

答案 0 :(得分:0)

由于这行而只读了几个月:

dates = month[1]

split创建的数组中选择索引1处的数组元素。由于数组索引从0开始计数,因此这是第二个元素,即月份(根据指定的日期格式)。您可以使用月份编号索引到列表中,以获取该月份的天数,例如daysInMonth[dates],其中已预定义了daysInMonth。该定义应该在使用任何时间之前进行,并且只需定义一次即可,因此可以在任何循环之外进行定义。

如果将变量名datesmonth交换,您的代码可能更易读。

答案 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]