파이썬 함수 작성 중 에러

cy0821의 이미지

학부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

라고 에러가 뜨네요...제가 보기엔 뭐가 이상한지 모르겠습니다
무슨 말이라도 좋으니 문제점을 알려주세요 ㅠ...헤매고 있습니다

shint의 이미지

자세한 내용은 책 예제 보시구요.

여기서 테스트 하실 수 잇습니다.
중간에 노란 버튼'이 있는데. Launch Interactive Shell 그거 누르면 테스트 됩니다.
https://www.python.org/

함수 안에서 한칸 띄우고 해야 됩니다.
input 함수가 안될경우. 빼고 해보세요.

이 코드는 제가 해보니 됩니다.

def isleapyear(year):
  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
 
isleapyear(1000)
r = isleapyear(1000)
print(r)
 
isleapyear(-1000)
r = isleapyear(-1000)
print(r)
 
print(r, isleapyear(100))

이 오류는 구글에서 검색해보시구요. 아마 파이썬 문서에도 있을겁니다.
인자값에 형식이 맞지 않는가 봅니다.
TypeError: not all arguments converted during string formatting

잘 되는 책 예제 소스를 하시기 바랍니다.

그리고. 얼마전 윤년'에 대한 풀이 글이 있습니다.
https://kldp.org/node/157021

----------------------------------------------------------------------------
젊음'은 모든것을 가능하게 만든다.

매일 1억명이 사용하는 프로그램을 함께 만들어보고 싶습니다.
정규 근로 시간을 지키는. 야근 없는 회사와 거래합니다.

각 분야별. 좋은 책'이나 사이트' 블로그' 링크 소개 받습니다. shintx@naver.com

익명 사용자의 이미지

에러메세지를 잘 읽어봐야지요. TypeError라고 알려주고 있지요. 지금 python interpreter가 % operator를 가지고 string conversion을 시도하고 있잖아요. 변수 year의 타입이 string 이니까 발생하는 문제라고 유추해볼 수 있겠네요.

if 0 > int(year):
return '0'

이런 코드를 쓰신 이유는 year가 string이기 때문에 int로 변환하려고 쓰신 거잖아요? 그래야 > operator를 사용해서 0과 비교할 수 있으니까요. 마찬가지 이유에서 year % 400 이나 year % 4 등등도 string을 가지고 할 수 있는 작업이 아니라 int를 가지고 해야하는 작업이지요. int로 변환해서 쓰세요.

1. 에러 메세지를 잘 읽고 문제를 유추할 것.
2. 변수의 타입에 대해서 항상 신경쓸 것. python과 같은 동적 타입 언어에서는 프로그래머가 타입에 대해 충분히 신경쓰지 않으면 헤메게 될 가능성이 큽니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.