programing tip

"들여 쓰기에서 탭과 공백의 일관성없는 사용"

itbloger 2020. 5. 31. 20:56
반응형

"들여 쓰기에서 탭과 공백의 일관성없는 사용"


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 개있는 이유는 공백 대신 탭을 사용하는 예제 코드에서 복사하여 붙여 넣을 때와 같이 탭이 실수로 삽입 된 시점을 즉시 알 수 있기 때문입니다.


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

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

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

 autopep8 -i my_file.py

여기링크 된 설명서 autopep8 .


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

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

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

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

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

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


나는 최근에 같은 문제가 있었고 파이썬 3이 사용하는 세트 인 것처럼 .py 파일의 문자 세트를 UTF-8변환해야한다는 것을 알았습니다 .

BTW, 나는 항상 4 개의 스페이스 탭을 사용했기 때문에 문제가 발생하지 않았습니다.


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

그것은 나를 위해 일했다 ...


숭고한 텍스트 3

Sublime Text에서 Python 파일을 편집 하는 동안 :

숭고한 텍스트 메뉴 > 기본 설정 > 설정-구문 별 :

숭고한 설정

{
    "tab_size": 4,
    "translate_tabs_to_spaces": true
}

s를 notepad++4s로 바꾸면 이 문제를 해결할 수 있습니다 .TabSpace

  1. 검색-> 찾기 ...를 선택 하거나 Ctrl+를 누르십시오F
  2. 바꾸기 탭을 선택 하십시오
  3. 이름 상자에 검색 모드 를 선택 (\ n \ 연구, \ t, \ 0, \ X ...) 확장
  4. 필드에서 내용 찾기 : write \ t
  5. 바꿀 내용 : 필드에서 Space4 번을 누릅니다 . 이 필드에 다른 것이 없는지 확인하십시오.
  6. 모두 바꾸기 버튼을 클릭 하십시오

탭을 공백으로 바꾸는 방법


나는이 문제가 있었다. 솔루션 : 문제 라인 앞의 '탭'은 공백, 4, 6 또는 8 공백입니다. 지우고 탭을 삽입해야합니다. '\티'. 그게 다야.


메모장 ++를 사용 하고이 오류가 발생했습니다.

Notepad ++에서는 탭과 4 개의 공백이 동일하다는 것을 알 수 있지만 코드를 Python IDLE에 복사 하면 차이점이 있으며 탭이있는 줄은 다른 공간보다 공간이 더 큽니다.

문제를 해결하기 위해 줄 앞의 탭을 삭제 한 다음 4 개의 공백을 추가했습니다.


나는 같은 오류가 있었지만 내가 뭘 잘못했는지 알 수 없었다.

그래서 코드에서 자동 들여 쓰기를 실행하고 컴퓨터가 내 결함을 수정하도록 허용하여 문제를 해결했습니다.

누군가 내가 어떻게했는지 궁금하다면. 단순한. vim에 가십시오. G = gg를 입력하십시오.

이것은 모든 것을 자동으로 수정합니다. 행운을 빕니다 :)


편집기 제한 사항 / 구성으로 인해 문제점이 발생했습니다. 일부 편집기는 다음을 통해 문제를 해결하는 데 도움이되는 도구를 제공합니다.

  1. 탭을 공백으로 변환

    예를 들어 Stani의 Python 편집기를 사용하는 경우 저장시 수행하도록 구성 할 수 있습니다.

  2. 공백을 탭으로 변환

ActiveState Komodo를 사용하는 경우 코드를 '탭화'하는 도구가 있습니다. 다른 사람들이 이미 지적했듯이 이것은 좋은 생각이 아닙니다.

Eclipse의 Pydev는 "탭을 공간 탭으로 변환"및 "공간 탭을 탭으로 변환"기능을 제공합니다.


나는 같은 오류가 있었다. 기존 * .py 파일에 여러 코드 줄을 추가해야했습니다. 메모장 ++에서는 작동하지 않았습니다.

코드 줄을 추가하고 저장 한 후에도 같은 오류가 발생했습니다. PyCharm 에서 동일한 파일을 열고 행을 추가하면 오류가 사라졌습니다.


때로는 tab들여 쓰기하는 동안 엉망이됩니다. 한 가지 방법은 분명히 사용하는 것입니다 tabbackspace올바르게에 코드를 들여.

또 다른 방법은 들여 쓰기를 원하는 정도에 따라 space 4 번 을 사용 하는 것입니다.

다른 일이 없을 때 나를 위해 일한 이상한 방법, 오류가 발생 backspaced하는 줄 , 그 줄을 이전 줄로 가져간 다음을 누르십시오 enter. 올바른 위치에 맞게 줄을 자동으로 들여 쓰기 한 후 오류가 발생하지 않았습니다.

잘하면 이것이 도움이 될 것입니다.


나는 같은 문제가 있었고 다음 파이썬 스크립트를 사용하여 수정했습니다. 그것이 다른 사람들을 돕기를 바랍니다.

코드 들여 쓰기에 탭과 공백을 사용하기 때문입니다. 이 스크립트에서는 각 탭을 4 개의 공백으로 바꿉니다.

input_file = "source code path here"  # e.g. source.py
output_file = "out put file path here"  # e.g out.py
with open(input_file, 'r') as source:
    with open(output_file, 'a+') as result:
        for line in source:
            line = line.replace('\t', '    ')
            result.write(line)

텍스트를 대체하는 도구를 제공하는 숭고한 도구 나 다른 편집기를 사용하는 경우 편집기에서 모든 탭을 4 개의 공백으로 바꿀 수 있습니다.


SciTE와 같은 검색 및 바꾸기를 수행 할 때 편집기에서 탭을 인식하지 못하는 경우 코드를 Word에 붙여넣고 Ctr-H 및 ^ t를 사용하여 검색하면 탭을 찾은 다음 4 개의 공백으로 바꿀 수 있습니다.


거기에서이 질문의 중복이었다 여기는 하지만 난 현대 편집자와 그들이 제공하는 기능의 광대 한 배열을 할 수있는 전망을 제공합니다 거라 생각 했어요. 파이썬 코드를 사용하면 .py파일 에서 의도 해야하는 것은 모두 탭 키를 사용하거나 공백으로 의도해야합니다. 규칙은 들여 쓰기를 위해 4 개의 공백을 사용하는 것입니다. 대부분의 편집기는 코드에 공백이나 탭이 들여 쓰기되어 있는지 편집기에 시각적으로 표시 할 수있어 디버깅에 크게 도움이됩니다. 예를 들어 atom을 사용하여 환경 설정으로 이동 한 다음 편집기에서 다음 두 가지 옵션을 볼 수 있습니다.

탭과 공백을 표시하는 원자 편집기

그런 다음 코드에서 공백을 사용하는 경우 코드가 들여 쓰기 된 작은 점이 표시됩니다.

여기에 이미지 설명을 입력하십시오

그리고 탭을 사용하여 들여 쓰기하면 다음과 같이 표시됩니다.

여기에 이미지 설명을 입력하십시오

Now if you noticed, you can see that when using tabs, there are more errors/warnings on the left, this is because of something called pep8 pep8 documentation, which is basically a uniform style guide for python, so that all developers mostly code to the same standard and appearance, which helps when trying to understand other peoples code, it is in pep8 which favors the use of spaces to indent rather than tabs. And we can see the editor showing that there is a warning relating to pep8 warning code W191,

I hope all the above helps you understand the nature of the problem you are having and how to prevent it in the future.


Use, Idle for python, or Idle3 for python3.


Solving this using Vim editor

  1. Open terminal (Ctrl + Alt + T).
  2. Go to the directory where the file is located (cd <path_to_your_directory>). Ex: cd /home/vineeshvs/work.
  3. Open the file in Vim (vim <file_name>). Ex: vim myfile.txt .
  4. [Optional step] Enable search keyword highlighting in Vim (ESC :set hlsearch)
  5. Go to the line where you have this problem (ESC :<line_number>). Ex: :53 in Vim editor after pressing ESC button once.
  6. Replace tabs using the required number of spaces in Vim (:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc). Ex: Tab will be replaced with four spaces using the following command: :.,$s/\t/ /gc after pressing ESC button once). This process is interactive. You may give y to replace the tab with spaces and n to skip a particular replacement. Press ESC when you are done with the required replacements.

들여 쓰기 된 비트를 높인 다음 탭을 클릭하십시오. 그들은 다음과 같이 될 것입니다 :)

참고 URL : https://stackoverflow.com/questions/5685406/inconsistent-use-of-tabs-and-spaces-in-indentation

반응형