2013-07-15 2 views
1

10 월 15 일 이후로 요일을 알아 내려면 산술의 간단한 부분을 사용할 수있다. 내 문제는 내가 파일에서 날짜를 읽었다는 것이다. (예 : 2009-06 -12) 그리고 난에 방정식을 뒀다 :파이썬 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 
01 23,516,

아직 내가

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은 모두 문자열입니다. 먼저 int로 변환하고 싶습니다.

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

그래도 방정식이 효과가 있습니까? 비 평일 평일을 많이 만들어 낼 것 같습니다. 당신은 그것을 miscopied했을 수도 있습니다. 또한, 괄호는 파이썬에서 그룹화 연산자가 아닙니다. 그것들은 목록 생성 구문입니다. w의 표현식에서 대괄호를 괄호로 바꿔야합니다. (또는 바닥 운영자 있어야 그 괄호했다? 절단이 좋은 경우에 그래서, 당신은 단지 intmath 모듈에서, math.floor을 원하는, 또는 것입니다 경우.)

+0

필자 내가 'INT'추가 – Obcure

+0

추가 정보 '목록'을 변경 기운으로 아직이하자 나던 것을 tryed. – user2357112

+0

예 tryed도 여전히 작동하지 않는 ?? – Obcure

0

위의 사용자가 말한 것처럼, 변환 할 문자열에서 int로. 그러나 datetime 모듈을 사용하기에 이상적인 곳입니다. 이것을 사용하여 datetime이 yyyy-mm-dd 형식으로 지정하고 모듈을 사용하여 정보를 datetime으로로드 할 수 있습니다.

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

+0

대신에()를 추가하는 것이 좋습니다.하지만이 작업에서는 datetime 모듈을 사용할 수 없습니다. – Obcure

+0

오, 알았습니다. Harry.txt의 샘플 라인을 질문에 추가 할 수 있습니까? 그것은 당신이 읽고있는 것을 명확히하는 데 도움이 될 것입니다. – user581592

관련 문제