파이썬 함수 작성 중 에러
글쓴이: cy0821 / 작성시간: 토, 2017/03/18 - 2:12오전
학부1학년생입니다 윤년계산프로그램을 짜는 도중 자꾸 에러가 생겨 질문합니다
def isleapyear(year):
while True:
year=input()
if 0 > int(year):
return '0'
if year%400!=0 and year%100==0:
return False
elif year%4!=0:
return False
else:
return True
y=input()
print(y,isleapyear(y))
라고 해서 하는데 자꾸
File "Main.out", line 14, in
print(y,isleapyear(y))
File "Main.out", line 6, in isleapyear
if year%400!=0 and year%100==0:
TypeError: not all arguments converted during string formatting
Makefile:21: 'py3_run' 타겟에 대한 명령이 실패했습니다
make: *** [py3_run] 오류 1
라고 에러가 뜨네요...제가 보기엔 뭐가 이상한지 모르겠습니다
무슨 말이라도 좋으니 문제점을 알려주세요 ㅠ...헤매고 있습니다
Forums:
파이썬 print 로 네이버 검색해보세요.
자세한 내용은 책 예제 보시구요.
여기서 테스트 하실 수 잇습니다.
중간에 노란 버튼'이 있는데. Launch Interactive Shell 그거 누르면 테스트 됩니다.
https://www.python.org/
함수 안에서 한칸 띄우고 해야 됩니다.
input 함수가 안될경우. 빼고 해보세요.
이 코드는 제가 해보니 됩니다.
이 오류는 구글에서 검색해보시구요. 아마 파이썬 문서에도 있을겁니다.
인자값에 형식이 맞지 않는가 봅니다.
TypeError: not all arguments converted during string formatting
잘 되는 책 예제 소스를 하시기 바랍니다.
그리고. 얼마전 윤년'에 대한 풀이 글이 있습니다.
https://kldp.org/node/157021
----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.
매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.
각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com
에러메세지를 잘 읽어봐야지요. TypeError라고
에러메세지를 잘 읽어봐야지요. TypeError라고 알려주고 있지요. 지금 python interpreter가 % operator를 가지고 string conversion을 시도하고 있잖아요. 변수 year의 타입이 string 이니까 발생하는 문제라고 유추해볼 수 있겠네요.
이런 코드를 쓰신 이유는 year가 string이기 때문에 int로 변환하려고 쓰신 거잖아요? 그래야 > operator를 사용해서 0과 비교할 수 있으니까요. 마찬가지 이유에서 year % 400 이나 year % 4 등등도 string을 가지고 할 수 있는 작업이 아니라 int를 가지고 해야하는 작업이지요. int로 변환해서 쓰세요.
1. 에러 메세지를 잘 읽고 문제를 유추할 것.
2. 변수의 타입에 대해서 항상 신경쓸 것. python과 같은 동적 타입 언어에서는 프로그래머가 타입에 대해 충분히 신경쓰지 않으면 헤메게 될 가능성이 큽니다.
댓글 달기