2013-07-15 62 views
1

因此,爲了弄清十月十五號以來的任何一天的星期幾,你可以使用一個簡單的算術,我的問題是我從文件中讀取日期(例如2009-06 -12)和我已經把公式中:在Python 3.3中求解方程

w = (d + [2.6 * m - 0.2] + Y + [Y/4] + 5 * C + [C/4]) % 7 

的日期的格式爲YYYY-MM-DD,我的代碼如下所示:

count = 5 
f = open('/Users/student/Desktop/Harry.txt').readlines()[count] 
Y = f[2:4] 
C = f[:2] 
m = f[5:7] 
d = f[8:10] 
w = (d + [2.6 * m - 0.2] + Y + [Y/4] + 5 * C + [C/4]) % 7 
if w == 0: 
    print (f, "is a Sunday") 
elif w == 1: 
    print (f, "is a Monday") 
elif w == 2: 
    print (f, "is a Tuesday") 
elif w == 3: 
    print (f, "is a Wednesday") 
elif w == 4: 
    print (f, "is a Thursday") 
elif w == 5: 
    print (f, "is a Friday") 
elif w == 6: 
    print (f, "is a Saturday") 

澄清:

w = day of the week counting from Sunday = 0 Monday = 1 
d = the day of the month (for e.g. 28th 13th) 
m = month number where March = 1 etc. 
Y = last 2 digits of year 
C = first 2 digits of year 

但我得到這個錯誤

Traceback (most recent call last): 
    File "/Users/student/Documents/workspace/Tutorial Challenges/src/Day_Of_The_Week.py", line 7, in <module> 
    w = (d + [2.6 * m - 0.2] + Y + [Y/4] + 5 * C + [C/4]) % 7 
TypeError: can't multiply sequence by non-int of type 'float' 

幫助將不勝感激。

回答

1

Y,C,md都是字符串。你想先把它們轉換成整數:

Y = int(f[2:4]) 
C = int(f[:2]) 
... 

你確定方程甚至可以工作嗎?它看起來會產生很多非整數工作日。你可能錯過了它。另外,括號不是Python中的分組操作符;他們是列表構造語法。您需要用w的表達式中的括號替換那些括號。 (或被認爲是地面操作人員的括號?如果是的話,你會想math.floor,從math模塊,或者只是int如果截斷是好的。)

+0

香港專業教育學院tryed是尚未它沒有讓我不能改變「名單」到「廉政」 – Obcure

+0

添加額外的信息。 – user2357112

+0

是的嘗試,以及仍然無法正常工作? – Obcure

0

正如上面的用戶說,你要轉換從字符串到int。但是,這是使用日期時間模塊的理想場所。您可以使用它來指定您的日期時間格式爲:yyyy-mm-dd,並使用該模塊將信息加載爲日期時間。

http://docs.python.org/2/library/datetime.html

+0

這是一個好主意,但在這個任務中它指定我不允許使用日期時間模塊 – Obcure

+0

哦,好吧。你可以添加一些來自Harry.txt的示例行嗎?這將有助於澄清你在讀什麼。 – user581592