파이썬 질문

쩜육@Google의 이미지

AA = "Hello"
AB = "Hihi"
AC = "Syntax"
AD = "World"
def the_flying_circus():
    # 여기서 부터 코딩을 시작하세요!
    if len(AA) == len(AD) and len(AA) >= len(AC):
        return True
        elif len(AA) * len(AD) >= len(AC) * len(AB):
            return True
            else:
                return False

이렇게 써서 실행했는데 자꾸 실행이 안되요.어디가 틀린거죠?

김정균의 이미지

python의 경우 indent가 매우 중요 합니다. 일단 indent가 전혀 맞지를 않네요.
그리고, 최소한 실행 결과의 에러가 뭔지는 보여 주어야죠. 그래야 올리신 소스가 원본이랑 동일한지도 체크가 가능하겠죠.

일단 올려주신 결과로만 봐서는 2가지 정도의 에러를 유추할 수 있습니다.

1. 파일 문자셋 문제..

올려주신 코드만 가지고 실행을 한다면 분명히 다음의 에러를 만나게 될 것으로 예상 합니다.

[use@host ~]$ python a.py
python a.py
  File "a.py", line 6
SyntaxError: Non-ASCII character '\xec' in file a.py on line 6, but no encoding declared; see <a href="http://www.python.org/peps/pep-0263.html" rel="nofollow">http://www.python.org/peps/pep-0263.html</a> for details

python의 경우에는 multibyte 문자를 python file에 사용하기 위해서는 (그것이 코드이든 주석이든..) 문자셋 설정을 해 주어야 합니다. 이 경우는 아래와 같이 파일 제일 처음에 이 파일의 문자셋이 무었이다 선언해 주면 됩니다.

#-*- coding: utf-8 -*-
AA = "Hello"
AB = "Hihi"
AC = "Syntax"
AD = "World"
blah blah......

2. indent 문제..

문자셋 문제가 발생하지 않는다면, indent 문제가 발생할 겁니다. python의 경우에는 다른 언어들이 블럭을 {}을 이용하는 것과는 달리 indent를 사용합니다. 그런데, 위의 코드의 경우, the_flying_circus 함수에서 if문의 indent가 전혀 맞지를 않고 있습니다.

[use@host ~]$ python a.py
  File "a.py", line 10
    elif len(AA) * len(AD) >= len(AC) * len(AB):
       ^
SyntaxError: invalid syntax

if문의 경우에는 indent가 space 4개로 시작하고 있는데, elif는 space 8개로 indent가 되어 있습니다. 그리고 else는 12개로 indent가 되어 있죠. 그래서 syntax 에러가 발생하게 되는 것입니다.

    # 여기서 부터 코딩을 시작하세요!
    if len(AA) == len(AD) and len(AA) >= len(AC):
        return True
    elif len(AA) * len(AD) >= len(AC) * len(AB):
        return True
    else:
        return False

이렇게 indent를 맞춰 주시면 됩니다.

마지막으로, 코드를 제대로 올린 것이라면 제가 제시한 사항들을 fix하면 정상 동작할 것입니다만, 다른 에러가 발생 한다면, 질문을 제대로 하지 못했다는 의미입니다.

항상 제대로 된 답변을 얻으시려면, 질문을 제대로 해야 합니다. 즉 어떻게 만들었고, 그 결과가 이러하다라는 것을 정확하게 적어 주어야 합니다. 이 말씀을 드리고 싶어서 제가 위에 주절주절 답변 같이 적어 드렸습니다만, 대부분의 답변 하시는 분들이 이렇게 답변을 해 줄 거라고는 기대하지 마십시오. 저 역시 두번 이렇게 하지 않을테니까요.

요지는 좋은 답변을 듣고 싶다면, 좋은 질문을 할 수 있는 방법도 강구 하시라는 겁니다.

쩜육@Google의 이미지

진짜 감사해요 해결되네요..ㅋㅋㅋㅋ 공백때문에 오류가 났던거네요 진짜 감사합니다

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.