파이썬 초보자가 흔히 저지르는 5가지 실수

일생 전에 나는 Borland의 Turbo C++를 다운로드하고 스스로 가르치려고 노력한 직후 프로그래밍에 대한 첫 번째 진출로 웹사이트를 구축하기 위해 HTML, CSS 및 PHP를 함께 엮은 것 같습니다(당시에는 잘 되지 않았습니다. 나는 젊었다!).

최근에 저는 Python을 처음 배우는 대학생들과 함께 일하고 있습니다. 그들 중 일부에게는 처음으로 완전한 프로그래밍을 하는 것입니다. 절대 초보자가 넘어지는 원인이 무엇인지에 대한 흥미로운 통찰력을 제공하여 이를 사용하여 제공되는 자료를 개선하는 데 도움이 되었습니다.

다양한 세션을 통해 많은 문제가 나타났습니다. 일부는 예상했고 일부는 실제로 발생하지 않았습니다. 따라서 더 이상 고민하지 않고 이것은 초보자 Python 개발자가 저지르는 가장 일반적인 실수였습니다.

파이썬 2.7과 파이썬 3



이것은 고전적인 것이었다. 대학 컴퓨터에는 각 컴퓨터에 2.7과 3.6의 두 가지 버전이 설치되어 있었습니다. 이로 인해 두 가지 다른 버전을 병렬로 실행할 때 발생할 수 있는 종류의 문제를 나타내는 몇 가지 상황이 발생했습니다.

한 학생은 "하지만 어제 실행했을 때 효과가 있었습니다!"라는 고전적인 사례를 가지고 있었습니다.

코드를 살펴본 후 유휴 Python 2.7에서 실수로 코드를 열었음이 분명해졌습니다.

잠시 후, 격분한 또 다른 학생이 패배의 비명을 질렀습니다. 그들은 이웃과 똑같은 코드를 가지고 있었지만 하나는 올바르게 작동하고 다른 하나는 오류를 일으켰습니다. 예, 하나는 Python 2.7에서 코드를 실행하고 다른 하나는 3.6에서 실행했습니다.

이 두 경우 모두 실제 문제는 Python 2.7의 입력 함수not working as they expected에 있었습니다.

잠시 제쳐두고 : 새 프로그래머의 일반적인 질문은 what version should I learn?입니다. 제 겸손한 의견으로는 3.x로 이동 한 다음 2.7의 차이점을 확인해야합니다 (솔직히 말하면 지금도 여전히). 야생.

들여쓰기 없음



곧바로: 공식적으로 spaces not tabs . 실제로: 무엇이든 하고 IDE/linter가 변환을 처리하도록 합니다.

중괄호를 사용하여 코드 블록을 나타내는 다른 언어와 달리 ( { } ) , Python은 공백에 의존합니다.

for(i=0; i<10; i++) {
    printf("%d", i);
}



for i in range(0, 10):
    print(i)

들여쓰기된 줄은 일반적으로 콜론으로 끝나는 명령문 뒤에 옵니다.

어느 것이 우리에게…

누락된 콜론



if/for/while/def/class/etc 끝에 콜론이 필요하지만; 문법적 의미를 이해하는 데 실제로 필요하지 않으므로 초보자는 문장 끝에서 생략하는 경향이 있습니다.

그 말은 둘 다:

if foo == bar
    print(foo)

그리고

if foo == bar:
    print(foo)

둘 다 문법적으로 이해가 되지만 둘 중 후자는 a) Python에서 오른쪽이고 b) easier to read 입니다.

콜론이 있으면 한 줄 문장도 허용됩니다.

if foo == bar: print(foo)

뒤에 빈 줄이 있을 때; 그렇게 하는 것을 옹호하는 것이 아닙니다.

문장 쓰기



이것은 특이한 것이었다. 상당한 수의 학생들이 모든 새 줄을 대문자로 시작하므로 다음과 같습니다.

should_end = False

while not should_end:
    an_input = input(Type something)

    if an_input == exit:
        should_end = True

가 되었다:

Should_end = False
While not should_end:
    An_input = input(Type something)

    If an_input == exit:
        Should_end = True

그들에게 많은 오류를 남겼습니다!

정말 정직하게 설명할 수 없습니다.

변수 등에 대한 Python 명명 규칙은 PEP 8에서 찾을 수 있으며 예약어는 소문자로 시작합니다.

유형 변환



학생들이 머리를 숙일 수 있는 흥미로운 주제입니다. 특히 그들이 더 관대한 언어에 대한 사전 경험이 있는 경우.

과제 중 하나는 학생이 숫자를 읽은 다음 1과 비교하여 특정 상태로 전환해야 하는 것이었습니다. 다음과 같이 생겼습니다.

state = 0
a_number = input(Gimme a number: )

if a_number == 1:
    state = 1
else:
    exit()

문제를 발견할 수 있습니까?

if 문은 문자열을 정수와 비교하기 때문에 상태가 변경되지 않습니다.

if 1 == 1:

이에 대한 해결책은 먼저 변수를 정수로 변환하는 것입니다.

a_number = int(input(Gimme a number: ))

참고: 유효성 검사는 포함되지 않습니다.

좋은 웹페이지 즐겨찾기