파이썬 초보자가 흔히 저지르는 5가지 실수
최근에 저는 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: “))
참고: 유효성 검사는 포함되지 않습니다.
Reference
이 문제에 관하여(파이썬 초보자가 흔히 저지르는 5가지 실수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/thatonejakeb/5-common-beginner-python-mistakes-27ga텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)