"삽입 시 탭 및 공간 사용 제한"
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
탭을 사용하지 마십시오.
- 편집기에서 들여쓰기에 4개의 공백을 사용하도록 설정하십시오.
- 모든 탭을 4개의 공백으로 바꾸려면 검색하고 바꾸십시오.
- 편집기가 탭을 8칸으로 표시하도록 설정되어 있는지 확인하십시오.
참고: 탭의 공간이 8개인 이유는 공간 대신 탭을 사용하는 예제 코드에서 복사 및 붙여넣기 등 탭이 의도치 않게 삽입되었을 때 바로 알아차리기 위함입니다.
autopep8
아래 명령으로 해결:
autopep8 -i my_file.py
다음 문서에 문서화면:autopep8
여기서 연결된다.
VSCode 사용자의 경우
Ctrl+Shift+P 또는 보기->명령 팔레트.
유형
>공간으로 들여쓰기 변환
Enter 키를 누르다.
INDLE 편집기를 사용하여 다음을 사용할 수 있다.
- 메뉴 편집 → 모두 선택
- 메뉴 형식 → 영역 검증 안 함
- 편집자가 8개의 공백을 탭으로 바꾸었다고 가정하면 입력 상자에 8을 입력하십시오.
- 선택 항목을 누르면 전체 문서가 수정된다.
sublime 텍스트 편집기를 사용할 때, 나는 나에게 정보를 제공하는 코드의 세그먼트를 선택할 수 있었다.inconsistent use of tabs and spaces in indentation
오류 및 선택:
view > indentation > convert indentation to spaces
그래서 문제가 해결됐지
일반적으로 사람들은 공간과 함께 들여쓰기를 선호한다.편집자 간에 일관성이 더 높아서 이런 종류의 불일치가 더 적다.그러나 탭으로 들여쓰기가 허용된다.그것은 당신의 선택이지만, 당신은 탭당 8칸의 기준이 약간 넓다는 것을 알아야 한다.
아마 네 문제 때문에 편집자가 실수를 했을 거야.탭을 공백으로 변환하는 것은 편집기에 의존한다.
예를 들어 Emacs에서는 이 방법을 'unabify'라고 부를 수 있다.
명령줄에서 sed 라인을 사용할 수 있음(공백 수를 원하는 대로 적용):
sed -e 's;\t; ;' < yourFile.py > yourNedFile.py
Python 개발에 Sublime Text를 사용하는 경우, 패키지 아나콘다(Anaconda)를 사용하면 오류를 피할 수 있다.아나콘다를 설치한 후 Sublime Text에서 파일을 열고 열린 공간을 마우스 오른쪽 버튼으로 클릭 → 아나콘다 선택 → 자동포맷 클릭완료. 또는 ++를 누르십시오.
이 문제는 다음과 같이 해결할 수 있다.notepad++
s를 4초로 교체하는 방법:
- 검색 선택 -> 찾기...또는 +를 누르십시오.
- 바꾸기 탭 선택
- 검색 모드라는 상자에서 확장(\n, \r, \t, \0, \x...)을 선택하십시오.
- 필드 찾기: \t 쓰기
- Replace with : 필드에서 4회 누른다.이 필드에 다른 항목이 없는지 확인하십시오.
- Replace All(모두 바꾸기)
같은 오류가 발생했을 때 내가 한 일: 모든 것을 선택하고(+Str )를 눌러서 더 이상 아무 것도 들여쓰지 않았다.이제 들여쓰기를 원하는 선으로 돌아가서 원하는 대로 다시 넣으세요.
나한테는 효과가 있었어...
서브라이임 텍스트 3
Sublime Text에서 Python 파일을 편집하는 동안:
Sublime Text 메뉴 > Preferences > Settings - Syntax Specific :
Python.sublime-settings
{
"tab_size": 4,
"translate_tabs_to_spaces": true
}
나는 최근에 같은 문제를 겪었는데, 파이썬 3에서 사용하는 것이기 때문에 단지 .py 파일의 charset을 UTF-8로 변환하기만 하면 된다는 것을 알게 되었다.
BTW, 나는 항상 4칸짜리 탭을 사용했으니까 문제는 그것들에 의해 야기된 것이 아니야.
ATOM을 사용하는 경우:
메뉴로 이동: 패키지 -> WhiteSpace -> 모든 탭을 공백으로 변환
들여쓰기를 삭제한 다음 탭을 누르거나 공백을 4번 누르도록 하십시오.탭 키를 사용하여 들여쓰기를 한 후 다음 줄에 있는 스페이스 키를 사용할 때 이런 일이 보통 내게 일어난다.
당신의 문제는 편집자 제한/구성 때문이다.일부 편집자는 다음과 같은 방법으로 문제를 해결하는 데 도움이 되는 도구를 제공한다.
탭을 공백으로 변환
예를 들어, Stani의 Python 편집기를 사용하는 경우 저장할 때 편집기를 구성할 수 있다.
공백을 탭으로 변환
만약 당신이 ActiveState Komodo를 사용하고 있다면 당신은 당신의 코드를 '탐지'할 수 있는 도구를 가지고 있다.다른 사람들이 이미 지적했듯이, 이것은 좋은 생각이 아니다.
Eclipse의 Pydev는 "탭을 스페이스탭으로 변환" 및 "스페이스탭을 탭으로 변환" 기능을 제공한다.
나는 메모장+++를 사용하고 이 오류를 얻었다.
메모장++에서 탭과 네 칸이 모두 같다는 것을 알 수 있지만, Python ILID에 코드를 복사하면 차이가 나고 탭이 있는 라인이 다른 것보다 더 많은 공간을 차지하게 된다.
문제를 해결하기 위해 줄 앞에 있는 탭을 지운 다음 네 칸을 추가했다.
나도 같은 실수를 했다.기존 *.py 파일에 코드 라인을 몇 개 추가해야 했다.메모장++에서는 작동하지 않았다.
코드 라인을 추가하고 저장한 결과 똑같은 오류가 발생했어.같은 파일을 PyCharm에서 열고 라인을 추가하자 오류가 사라졌다.
사용하다pylint
그것은 당신에게 얼마나 많은 공간이 필요한지 그리고 어디에 필요한지에 대한 상세한 보고서를 줄 것이다.
(SciTE와 같이) 검색 및 교체 시 편집자가 탭을 인식하지 못하면 Word에 코드를 붙여 넣고 Ctr-H와 ^t를 사용하여 검색한 다음 4개의 공백으로 대체할 수 있는 탭을 찾을 수 있다.
여기서부터 이 질문이 중복되었지만, 나는 현대 편집자들과 그들이 제공하는 다양한 기능들에 대한 견해를 제시해야겠다고 생각했다.python 코드로, intent가 필요한 것은 모두.py
파일, 탭 키를 사용하거나 공백으로 모두 삽입해야 함.관례는 들여쓰기에 네 칸을 사용하는 것이다.대부분의 편집자는 코드가 공백이나 탭으로 들여쓰기되는지 여부를 편집기에서 시각적으로 보여주는 기능을 가지고 있어 디버깅에 큰 도움이 된다.예를 들어, 원자, 환경설정 및 편집기로 이동하면 다음과 같은 두 가지 옵션을 볼 수 있다.
그런 다음 코드가 공백을 사용하는 경우 코드가 들여쓰기되는 작은 점을 볼 수 있다.
탭을 사용하여 들여쓰면 다음과 같은 것을 볼 수 있다.
만약 여러분이 탭을 사용한다면, 왼쪽에는 더 많은 오류/경고들이 있다는 것을 알 수 있을 겁니다. 이것은 기본적으로 pep8 펩8 문서라고 불리는 것 때문입니다, 그래서 모든 개발자들은 대부분 동일한 표준과 외관을 가지고 코딩을 하기 때문에, 다른 사람들의 코드를 이해하려고 할 때,탭보다는 들여쓰기 공간을 선호하는 펩8.그리고 우리는 펩8 경고 코드와 관련된 경고가 있다는 것을 보여주는 편집자를 볼 수 있다.W191
위의 모든 것들이 당신이 겪고 있는 문제의 본질과 미래에 그것을 예방하는 방법을 이해하는 데 도움이 되기를 바란다.
나는 이상하게도 내 .py 파일 중 하나와 비슷한 문제에 부딪혔다.나는 간단히 파이샹에서 파일을 열고 누른다.Option
+Command
+L
파일 내용을 한 번에 올바르게 포맷할 수 있다.
나는 내가 이 특정한 .py 파일을 내가 보통 sublime text나 Pycharm을 선택하는 것과는 반대로 주피터 연구소를 통해 코드화했기 때문에 어려움을 겪고 있었던 것 같다. 그래서 여기서 많은 답변들이 암시해 온 숨겨진 암묵적 문제에 부딪혔다.
SULIME 텍스트를 위한 SOULUTION
이 문제에 대한 나의 해결책은 유휴 편집기에서 이 문제를 여는 것이었다. 그러면 유휴 편집기가 문제를 밝혀낼 것이다.
예)
서브라임 텍스트
while run:
clock.tick(27)
milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
유휴 편집기
while run:
clock.tick(27)
milli = clock.tick()
seconds = milli/1000
timeForLevel += seconds
print(timeForLevel)
나는 당신이 단지 한가한 편집자만을 사용해야 한다고 말하는 것이 아니다.그 오류가 발생하면 유휴 편집기를 확인해야 한다는 겁니다.
나는 똑같은 실수를 했지만 내가 무엇을 잘못하고 있는지 알 수 없었다.
그래서 나는 내 코드에 자동 인텐트를 실행하고 기계가 내 결함을 고칠 수 있게 함으로써 그것을 고쳤다.
내가 어떻게 그랬는지 궁금해하는 사람이 있다면.심플vim으로 들어가라.G=g를 입력하십시오.
이렇게 하면 모든 것이 자동으로 해결된다.행운을 빈다 :)
가끔은tab
들여쓰다가 엉망진창이야한 가지 방법은 분명히 그 방법을 사용하는 것이다.tab
그리고backspace
코드를 올바르게 들여쓰기.
또 다른 방법은 사용하는 것이다.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)
sublime이나 텍스트를 대체하는 도구를 제공하는 다른 편집기를 사용할 경우 편집기에서 4개의 공백으로 모든 탭을 바꿀 수 있다.
Vim 편집기를 사용하여 이 문제 해결
- 개방단자(++Ctrl )
- 파일이 있는 디렉토리로 이동(
cd <path_to_your_directory>
) Ex:cd /home/vineeshvs/work
. - Vim에서 파일 열기(
vim <file_name>
) Ex:vim myfile.txt
. - [옵션 단계] Vim에서 검색 키워드 강조 표시 활성화(ESC
:set hlsearch
) - 이 문제가 있는 라인으로 이동하십시오(ESC
:<line_number>
) Ex::53
버튼을 한 번 누른 후 Vim 편집기에서. - Vim's Yourth Kim)의 하십시오.
:.,$s/\t/<give_as_many_spaces_as_you_want_to_replace_tab>/gc
: : tab은 4개의 ex: tab은 4개의 tab은 4개의 space로 되어 있다.:.,$s/\t/ /gc
버튼을 한 번 누른 후).이 과정은 쌍방향이다.줘도 좋다y
탭을 공백으로 바꾸려면n
특정 교체를 건너뛰는 것.필요한 교체가 완료되면 누르십시오.
음, 나도 같은 문제가 있었고, 내가 다른 파이톤 편집기에서 서브라임으로 코드를 복사한 것이 문제라는 것을 깨달았어.
나는 주피터 노트북으로 작업하다가 코드를 숭고하게 복사했다.분명히 기능에서 움직이는 코드와 같이 특정한 수정을 할 때 들여쓰기가 지저분해지고 여기서 문제가 발생한다.
그러니 편집자 한 명만 고집해라.만약 그렇게 한다면, 너는 아무 문제가 없을 것이다.
내게는 다음과 같은 수법이 통했다.
- 코드를 복사하여 메모장에 붙여 넣으십시오.
- 그런 다음 메모장에서 다시 모두 선택하고 코드를 복사하십시오.
- 내 견해에 붙여넣어라.파이를 치다
- views.py에서 새로 붙여넣은 코드를 모두 선택하고 키보드에서 shift+properties를 눌러 모든 탭을 제거하십시오.
- 이제 탭 키를 다시 사용하여 올바른 들여쓰기를 사용하십시오.
참조URL: https://stackoverflow.com/questions/5685406/inconsistent-use-of-tabs-and-spaces-in-indentation
'programing' 카테고리의 다른 글
Electronic Menu 클릭() 이벤트를 사용하여 Vue 경로를 변경하려면 어떻게 해야 하는가? (0) | 2022.03.12 |
---|---|
리디렉션 후 구성 요소의 이.props.location에 액세스할 수 없음 (0) | 2022.03.12 |
뉴라인 없이 인쇄(인쇄 'a'), 인쇄 공간, 제거 방법? (0) | 2022.03.12 |
반응 기본 약속 값을 변수에 문자열로 전달 (0) | 2022.03.11 |
react/remensx에서 여러 multiActions를 사용하는 방법? (0) | 2022.03.11 |