brunch

You can make anything
by writing

C.S.Lewis

by 김지영입니다 Jan 30. 2024

외계어배우기-문제#3 WinningTeam:조건문2

Python을 배워봅시다

이제 파이썬 if 문에 대해 알아보자.


Winning Team 문제를 해결하기 위해 코드를 작성하기 전에, 우선 글로 설명해 보면 다음과 같을 것이다. 사과 팀의 최종 점수를 apple_total이라고 하고, 바나나 팀의 최종 점수를 banana_total이라고 하자.


1. 만약 사과 팀의 최종 점수가 바나나 팀의 최종 점수보다 크면 A라고 출력하라.

2. 만약 바나나 팀의 최종 점수가 사과 팀의 최종 점수보다 크면 B라고 출력하라.

3. 만약 사과 팀의 최종 점수와 바나나 팀의 최종 점수가 같으면 T라고 출력하라.


자, 이제 코드를 보자. (이번에는 아이패드를 이용해서 공부했으므로 아이패드 앱인 Pythonista 3을 사용했고, 아쉽게도 유료이다.)

if 문은 if 키워드로 시작한다. 키워드는 파이썬에서 특별한 의미를 가진 단어이기 때문에 변수로 사용할 수 없다. if라는 키워드 다음에는 Boolean 표현식과 콜론, 그리고 하나 이상의 들여쓰기 문장이 나온다. 여기 들어쓰기된 문장을 블록이라고 하는데, Boolean 표현식이 True이면 블록이 실행되고 False이면 건너뛴다. 프롬프트가 >>>에서 ...으로 바뀜으로써 if 문 블록 안에 있다는 사실을 다시 알려준다. if 문 블록(print('A')을 enter 키를 누르면 ...가 표시되는데, 더 이상 일력할 것이 없으면 다시 enter 키를 눌러 이 프롬프트를 닫고 >>> 프롬프트로 돌아간다.


들여쓰기는... 이 시점에서 프로그래머들 사이에서 여전히 논쟁이 되고 있는 tap과 space 이슈가 발생한다. 이 부분에 대해 아직은 내 개인 의견을 이야기할 수 있는 단계는 아닌 듯하여 Chatpy와의 대화를 추가한다.



: 탭과 공백(스페이스)을 둘러싼 들여쓰기 전쟁에 대해 들어본 적이 있나요? 

Chatpy : 네, 프로그래밍에서 탭과 공백 사이의 '들여쓰기 전쟁'은 꽤 잘 알려져 있습니다. 이 논쟁은 소스 코드에서 들여쓰기를 위해 탭을 사용할지, 공백을 사용할지에 관한 것입니다. 프로그래머들 사이에서 의외로 논쟁의 여지가 많은 주제이며, 양측의 의견이 팽팽하게 맞서고 있습니다.

배경

프로그래밍의 들여쓰기: 들여쓰기는 프로그래밍에서 가독성과 정리를 위해 매우 중요하며, 특히 파이썬과 같은 언어에서는 구문론적으로도 중요합니다. 탭 문자와 특정 수의 공백 문자(일반적으로 2~4개의 스페이스) 중 어느 것이 더 나은 들여쓰기 방식인지에 대한 논쟁이 벌어지고 있습니다.

장점 및 단점 주장

장점: 탭 문자는 여러 개의 공백 문자보다 공간을 덜 차지하므로 파일 크기 측면에서 탭이 더 효율적일 수 있습니다.

장점: 개별 개발자가 코드 편집기에서 원하는 들여쓰기 폭을 선택할 수 있습니다(예: 한 편집기에서는 탭을 2칸 너비로 표시하고 다른 편집기에서는 4칸 너비로 표시할 수 있음).

단점: 탭 너비가 다르게 설정된 환경에서는 탭으로 인해 서식이 일관되지 않아 가독성이 저하될 수 있습니다.

스페이스

장점: 공백은 사용하는 텍스트 편집기나 IDE에 관계없이 일관된 들여쓰기를 제공하므로 여러 환경에서 코드의 모양이 균일하게 유지됩니다.

장점: 파이썬과 같이 일관된 들여쓰기가 중요한 언어에 공백을 사용하는 것이 좋습니다. Python 스타일 가이드(PEP 8)에서는 탭보다 공백을 권장합니다.

단점: 공백을 사용하면 파일 크기가 약간 커지고 더 많은 키 입력이 필요할 수 있습니다(탭 키를 누를 때마다 여러 개의 공백을 삽입하도록 편집기를 구성하지 않은 경우).

실제 사용

- 많은 최신 프로그래밍 환경에서는 탭과 공백 중 하나를 선택하는 것이 개인적 선호도나 팀 관례에 따라 결정되는 경우가 많습니다.

- 일부 코드 스타일 가이드와 언어 커뮤니티에서는 규범이 정해져 있습니다(예: Python의 경우 PEP 8).

- 통합 개발 환경(IDE)과 코드 편집기에서는 탭을 자동으로 공백으로 변환하거나 탭 문자의 너비를 설정하는 설정을 제공하는 경우가 많아 일부 문제를 완화하는 데 도움이 됩니다.

문화적 영향

- 이 논쟁은 TV 쇼 "실리콘 밸리"의 한 에피소드에서 등장인물들이 탭과 스페이스의 장점에 대해 논쟁하는 장면에서 유머러스하게 강조되어 일부 프로그래머들이 이 주제에 대해 얼마나 열정적으로 생각하고 있는지를 보여줬습니다.

- 스택 오버플로에서 실시한 설문조사와 같은 설문조사에서는 탭과 스페이스의 사용 현황을 조사하고 이를 직무 만족도 및 급여와 같은 다양한 요소와 연관시키기도 합니다.


궁극적으로 탭과 스페이스 사이의 선택은 코딩 스타일의 중요한 측면이 될 수 있지만, 가장 중요한 것은 프로젝트 내에서 일관성을 유지하고 정의된 코딩 표준을 준수하는 것입니다.  


덧, 여하튼, 나는 스페이스 4칸을 사용하기로 했다. 


위에서 이야기한 1번부터 3번 문장을 물론 if 문으로 모두 작성할 수도 있다.

이전에 이야기한 것처럼 처음 두 if 문의 Boolean 표현식이 False이기 때문에 두 개의 if 문 블록은 건너뛰게 된다. 이러면 if 문들이 서로 독립적인 관계가 되는데, 하나의 if 문으로 실행되게 하려면 어떻게 해야 할까? 


enter 키를 눌러 ... 프롬프트를 닫지 않고 elif 라인을 입력하면 하나의 if 문으로 실행할 수 있다. 키워드 elifelse-if라는 의미이며, if 문에서 else 이전에 아무것도 실행되지 않은 경우에만 elif 표현식이 평가된다는 의미이다. 


그렇다면 바로 위에서 말한 else는 무슨 의미일까?


파이썬은 Boolean 표현식을 위에서 아래로 평가한다. 그중 하나라도 True이면 연결된 블록을 실행하고 나머지는 건너뛰게 된다. 반면에 위에서부터 평가한 블록이 False라면 else 블록을 실행한다. 키워드 else를 사용하면 코드를 더 명확하게 만드는 데 도움이 될 수 있으며, 나머지 모든 경우를 나타내는 Boolean 표현식을 만들 필요가 없다. 즉, else 키워드는 제시된 케이스를 닫는다는 의미이다. 



매거진의 이전글 외계어 배우기- 문제#3 WinningTeam:조건문1
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari