2012-12-26 20 views
9

Próbuję utworzyć program w Pythonie, który poinformuje Cię o dniu tygodnia, w którym się urodziłeś, używając algorytmu Zellera http://en.wikipedia.org/wiki/Zeller%27s_congruence, ale jest podając mi ten błąd:TypeError: nieobsługiwane typy argumentów dla -: 'int' i 'list'

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

Dlaczego tak jest?

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 

(Jest to pierwszy program tworzę sam, tak być miłym proszę;))

+0

'[ year/100] 'zmień to na:' (year/100) ', także w' (day + (month + 1) * 2.6' gdzie jest nawias zamykający? (usuń ',') –

Odpowiedz

4

Co się dzieje w odpowiedzi na swoje bezpośrednie pytanie zostało odebrane przez @mellamokb i komentarzy ...

jednak woul d podkreślić, że Python to już wbudowane i ułatwiłaby:

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

Następnie można łatwiej wykonywać obliczenia na obiekcie, który jest faktycznie datetime zamiast współ-erced struny ...

3

myślę 2 * [year/100] powinny być nawiasów zamiast nawiasów, w przeciwnym razie oznacza to chcesz zrobić listę pojedynczego elementu :

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

plus ',' po '2.6' jest również błędem. –

+0

Dziękuję wszystkim za odpowiedzi! Zrobiłem to i przecinek i działa! – Esther28