2014-09-02 41 views
-1

我已經創建了一個腳本來計算星期幾,但我必須使用太多的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' 
+1

[Dictionary](https://docs.python.org/2/tutorial/datastructures.html)。 – Maroun 2014-09-02 06:58:36

+1

或者根本不打擾;使用'strftime'和'%A'指令:https://docs.python.org/2/library/datetime.html#strftime-and-strptime-behavior – jonrsharpe 2014-09-02 06:59:21

回答

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] 
1

字符串你可以創建一個字典,按日期名稱作爲值,然後鍵入數字索引它來得到你想要的。像這樣的東西

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

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

使用字典將解決您的if問題。不過,值得一提的是,你不需要重新發明輪子,你可以簡單地使用strftime

我也想提一下Arrow,它爲Python提供了更好的日期和時間,試試吧。

+1

用'date.strftime('%A')更新'這是正確的答案。 – U2EF1 2014-09-02 07:01:18

0

的解決方案是使用一個列表或者一個字典:

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

無字典方式:

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

+1。作爲問題解決方案的問題更爲明智,但我認爲OP正在詢問實施交換機類型聲明。 – 2014-09-02 07:38:20

-1

字典將是你的情況下,最優雅的解決方案,我猜。如果你需要一個更復雜的邏輯來代替簡單的映射,你可能會考慮一個switch語句。

+0

-1。 Python沒有switch語句。 – 2014-09-02 07:37:29