减少太多的if子句

时间:2014-09-02 06:56:10

标签: python

我已经创建了一个脚本来计算星期几,但是我必须使用太多的if子句。有没有办法在不使用太多ifs的情况下做到这一点。

实际链接

http://pc2solution.blogspot.in/2014/09/python-calculate-day-of-week-for-any.html

脚本:

import datetime
year = raw_input('Enter year in format YYYY... ')
mon = raw_input('Enter month in format MM ')
date = raw_input('Enter date in format ')
a = datetime.date(int(year), int(mon), int(date)).weekday()  # 3=Thursday
if a == 0:
    print 'Its Monday'
if a == 1:
    print 'Its Tuesday'
if a == 2:
    print 'Its Wednesday'
if a == 3:
    print 'Its Thursday'
if a == 4:
    print 'Its Friday'
if a == 5:
    print 'Its Saturday'
if a == 6:
    print 'Its Sunday'

6 个答案:

答案 0 :(得分:2)

使用字典可以解决您的if问题。但是,值得一提的是,您不需要重新发明轮子,只需使用strftime

我还想提一下Arrow,它可以为Python提供更好的日期和时间,试试吧。

答案 1 :(得分:1)

您可以使用数字键入字典,并将日期名称作为值,然后将其编入索引以获得所需内容。像这样的东西

d = { 0 : "Monday",
      1 : "Tuesday",
      .
      .
      .
    }

print "It's {}".format(d[a])

答案 2 :(得分:1)

无词典方式:

>>> import datetime
>>> a = datetime.date(2014,9,2)
>>> datetime.datetime.strftime(a, '%A')
'Tuesday'

答案 3 :(得分:0)

添加一个字典,其键将是日期索引,其值为您要显示的字符串

verbose_dict = {0: "Its Monday", 1 : "Its Tuesday", 2: "Its Wednesday", 3: "Its Thursday", 4: "Its Friday", 5: "Its Saturday", 6: "Its Sunday" }
a = datetime.date(int(year), int(mon), int(date)).weekday()  # 3=Thursday
print verbose_dict[a]

答案 4 :(得分:0)

解决方案是使用列表或词典:

days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', Saturday', 'Sunday']
print 'It\'s %s' % days[a]

答案 5 :(得分:-1)

我想,字典将是您案例中最优雅的解决方案。如果您需要更复杂的逻辑而不是简单的映射,那么您可能会想到一个switch语句。