[python] “들여 쓰기에서 탭과 공백의 일관성없는 사용”

Python 3.2에서 응용 프로그램을 만들려고하는데 들여 쓰기를 위해 항상 탭을 사용하지만 편집기조차도 일부를 공백으로 변경 한 다음 실행하려고 할 때 “탭과 공백이 일관되지 않은 채로 인쇄됩니다” 프로그램.

공백을 탭으로 변경하려면 어떻게해야합니까? 나를 미치게한다. (저는 프로그래밍 초보자입니다). 코드에 대한 전반적인 팁을 얻을 수 있다면 기쁠 것입니다. 많은 실수를 저지르면 기뻐할 것입니다.

import random

attraktioner = ["frittfall","bergodalbana","spökhuset"]


class Nojesfalt:
    def __init__(self, attraktion):
        self.val = attraktion
        self.langd = 0
        self.alder = 0


#längdgräns för fritt fall
    def langdgrans(self):
        print("")
        self.langd = int(input("Hur lång är du i cm? "))
        if self.langd < 140:
            print("tyvärr, du är för kort, prova något annat")
            return 0
        elif self.langd >= 140:
            print("håll dig hatten, nu åker vi!")
            print(" ")
            return 1

#åldersgräns för spökhuset
    def aldersgrans(self):
        print("")
        self.alder = int(input("Hur gammal är du? "))
        if self.alder < 10:
            print("tyvärr, du är för ung, prova något annat")
            return 0
        elif self.alder >= 10:
            print("Gå in om du törs!")
            print(" ")
            return 1


#åker attraktion frittfall lr bergodalbana
        def aka(self):
                print("")
        print(self.val)
        tal = random.randint(0,100)
        if tal < 20:
            print("åkturen gick åt skogen, bättre lycka nästa gång")
        elif tal >= 20:
            print("jabbadabbbadoooooooo")
            return 1

#går i spökhuset
        def aka1(self):
                print("")
        print(self.val)
        tal = random.randint(0,100)
        if tal < 20:
            print("du är omringad av spöken och kan inte fortsätta")            return 0
        elif tal >= 20:
            print("Buhuuuuuu, buuuhuuuu")
            return 1

#programkod
print("Välkommen till nöjesfältet, vad vill du göra?")
print(" ")

while 1:
    vald_attr = input("Vad vill du göra?\n1. frittfall\n2. bergodalbana\n3. spökhuset\n4. Avsluta\n")
    if vald_attr == "1":
        val = Nojesfalt(attraktioner[0])
        if val.langdgrans() == 1:
            val.aka()
    elif vald_attr == "2":
        val = Nojesfalt(attraktioner[1])
        val.aka()
    elif vald_attr == "3":
        val = Nojesfalt(attraktioner[2])
        if val.aldersgrans() == 1:
            val.aka1()
    elif vald_attr == "4":
        break



답변

탭을 사용하지 마십시오.

  1. 들여 쓰기에 4 개의 공백 을 사용하도록 편집기를 설정하십시오 .
  2. 모든 탭을 4 개의 공백으로 바꾸려면 검색하고 바꿉니다.
  3. 편집기가 탭을 8 개의 공백 으로 표시 하도록 설정되어 있는지 확인하십시오 .

참고 : 탭에 공백이 8 개있는 이유는 공백 대신 탭을 사용하는 예제 코드에서 복사하여 붙여 넣을 때와 같이 탭이 실수로 삽입 된 시점을 즉시 알 수 있기 때문입니다.


답변

autopep8아래 명령을 사용하여 나를 위해 수정했습니다.

 autopep8 -i my_file.py

여기링크 된 설명서 autopep8 .


답변

으로 IDLE의 편집이 사용할 수 있습니다 :

  • 메뉴 편집모두 선택
  • 메뉴 형식지역 탭 해제
  • 편집기가 8 개의 공백을 탭으로 교체했다고 가정하면 입력 상자에 8을 입력하십시오.
  • select를 누르면 전체 문서가 수정됩니다.

답변

당신이 사용하는 경우 숭고한 텍스트 파이썬 개발을, 당신은 패키지 아나콘다를 사용하여 오류를 방지 할 수 있습니다. Anaconda를 설치 한 후 Sublime Text로 파일을 열고 열린 공간을 마우스 오른쪽 버튼으로 클릭하고 → Anaconda를 선택하고 → 자동 형식을 클릭하십시오. 완료 . 또는 Ctrl+ Alt+를 누릅니다 R.


답변

일반적으로 사람들은 공간 들여 쓰기를 선호합니다. 여러 편집기간에 일관성이있어 불일치가 줄어 듭니다. 그러나 탭으로 들여 쓰기 할 수 있습니다. 그것은 당신의 선택입니다. 그러나 탭당 8 칸의 표준은 약간 넓습니다.

문제에 관해서는 아마도 편집자가 엉망이되었을 것입니다. 탭을 공백으로 변환하는 것은 실제로 편집기에 따라 다릅니다.

예를 들어, Emacs에서는 ‘untabify’메소드를 호출 할 수 있습니다.

명령 행에서 sed 행을 사용할 수 있습니다 (빈 공간 수를 원하는대로 조정하십시오).

   sed -e 's;\t;       ;' < yourFile.py > yourNedFile.py


답변

숭고한 텍스트 편집기를 사용할 때 inconsistent use of tabs and spaces in indentation오류가 발생한 코드 세그먼트를 선택하고 다음을 선택할 수있었습니다 .

view > indentation > convert indentation to spaces

나를 위해 문제를 해결했습니다.


답변

동일한 오류가 표시되었을 때 수행 한 작업 : 모든 항목 ( Str+ A)을 선택 하고 Shift+를 누릅니다 Tab. 그래서 더 이상 들여 쓰기가 없었습니다. 이제 들여 쓰기하려는 줄로 돌아가서 원하는 방식으로 되돌립니다.

그것은 나를 위해 일했다 …