2012-12-26 119 views
9

我試圖在python中創建一個程序,它會告訴你使用Zeller算法的出生周的那一天http://en.wikipedia.org/wiki/Zeller%27s_congruence但它是給我這個錯誤TypeError:不支持的操作數類型爲 - :'int'和'list'

TypeError: unsupported operand type(s) for -: 'int' and 'list'

這是爲什麼?

date = raw_input ("Introduce here the day, month and year you were born like this: DDMMYYYY") 

if date.isdigit() and len(date) == 8: 
    day = date[0:2] 
    month = date[2:4] 
    year = date[4:8] 
    day = int(day) 
    month = int(month) 
    year = int(year) 
    result = (day + (month + 1) * 2.6, + year % 100 + (year % 100)/4 - 2 * [year/100]) % 7 

(這是第一個程序我自己創造,所以是很好的,請;))

+0

'[年/ 100]'將其改爲:(年/ 100)',同樣在'(日+(月+ 1)* 2.6'中,右括號是什麼? (刪除',') –

回答

4

發生了什麼事在回答你的直接問題已經回答了@mellamokb和評論...

然而,竟被我C點出了Python已經是這個內置的和將使它更容易:

from datetime import datetime 
d = datetime.strptime('1312981', '%d%m%Y') 
# datetime(1981, 12, 13, 0, 0) 

然後你就可以更容易的對象,實際上是一個datetime而不是共同erced串上進行計算...

3

我覺得2 * [year/100]應該是括號,而不是括號,否則,表示你想使一個單一的元素列表:

(year % 100)/4 - 2 * (year/100)) 
        ^  ^change [] to() 
+2

加'''''2.6'後也是一個錯誤。 –

+0

謝謝大家的回答!我做了這個和逗號的事情,它的工作! – Esther28

相關問題