11.1 삼항 연산자
Python에는 소위 삼항 연산자가 존재하며, 이는 기본적으로 연산자 if와 else의 변형된 형태를 나타냅니다.
예를 들어 다음과 같은 코드가 있다고 치자:
if a < b:
min = a
else:
min = b
이렇게 단순한 코드가 많은 공간을 차지하지 않도록 하기 위해, compact한 작성을 고안했습니다. 이는 다음과 같이 보일 것입니다:
min = a if a < b else b
삼항 연산자의 일반적인 형태는 다음과 같이 설명할 수 있습니다:
변수 = 값1 if 조건 else 값2
조건이 참이면 변수에 값1이 할당되고, 거짓이면 값2가 할당됩니다.
조건 다음에 콜론을 사용하지 않는다는 점에 주의하세요.
11.2 반복문에서의 else 연산자
Python에서 else 연산자는 if 조건 연산자와 자주 관련되어 있습니다. 하지만 그것의 사용은 여기서 끝나지 않으며, for와 while 반복문에서도 사용할 수 있습니다.
이 반복문에서의 else 사용은 초보자들에게 혼란을 줄 수 있지만, 프로그램의 실행 흐름을 제어하는 흥미로운 가능성을 제공합니다.
반복문에서 else가 어떻게 작동하는지
반복문에서 else는 반복문이 정상적으로 종료된 경우에만 (즉, break 연산자로 중단되지 않은 경우) 실행됩니다. 이 특징으로 인해 else는 반복문이 조기 종료되었는지 확인해야 하는 시나리오에 유용합니다.
for 루프에서의 사용 예:
for i in range(3):
password = input('비밀번호를 입력하세요: ')
if password == 'sekret':
print('비밀번호가 승인되었습니다.')
break
else:
print('입력 시도 기회가 없거나 입력된 모든 비밀번호가 틀렸습니다.')
여기서 else는 사용자가 세 번 비밀번호를 잘못 입력했을 때 작동합니다. 사용자가 올바른 비밀번호를 입력하면 break로 인해 반복문이 중단되며, else 블록은 실행되지 않습니다.
while 루프에서의 사용 예:
n = 5
while n > 0:
print(n)
n -= 1
else:
print('반복문이 정상적으로 종료되었습니다.')
이 경우 반복문이 자연스럽게 종료된 후, else가 실행됩니다, 왜냐하면 조건이 거짓이 되었기 때문입니다.
실질적인 사용 의미
반복문에서 else의 사용은 검색 알고리즘에서 특히 유용할 수 있습니다, 성공적으로 검색이 되었는지 아닌지를 확인해야 할 때. 예를 들어, 리스트에서 존재하지 않는 요소를 검색할 때, 반복문이 종료된 후 실패 메시지를 출력하기 위해 else를 사용할 수 있습니다.
반복문에서 else를 명확하고 일관되게 사용하여 당신의 코드를 읽는 사람들이 혼동하지 않도록 하세요. 반복문에서 else는 항상 직관적이지 않다는 것을 기억하고, 그래서 만약 코드가 더 명확해진다면 주석을 추가하거나 다른 방법으로 논리를 구현하는 것을 고려하세요.
11.3 중첩 반복문
Python에서는 매우 복잡한 논리를 매우 compact하게 작성할 수 있습니다. 몇몇 경우에는 중첩된 if가 필요하고, 다른 경우에는 중첩된 반복문이 필요합니다. 이제 그 작동의 몇 가지 사항에 대해 이야기할 것입니다:
중첩된 반복문은 하나의 반복문이 다른 반복문 안에 있는 것을 의미합니다. 이는 예를 들어 다차원 배열, 리스트의 리스트 또는 다른 중첩된 데이터 구조를 처리할 수 있게 해줍니다.
중첩된 반복문은 외부 반복문과 하나 이상의 내부 반복문으로 구성됩니다. 외부 반복문이 한 번 반복할 때마다 내부 반복문은 완전히 실행됩니다:
for i in range(3): # 외부 반복문
for j in range(3): # 내부 반복문
print(f"({i}, {j})")
외부 반복문의 관점에서 내부 반복문과 그 내용은 단순히 외부 반복문의 각 반복에 대해 실행되는 명령 블록일 뿐입니다. 외부 반복문은 내부에 무엇이 있는지, 얼마나 많은 반복문이 있는지를 신경 쓰지 않습니다. 그것은 단순히 자신의 리스트의 변수마다 내부 명령 블록을 실행할 뿐입니다.
우리가 구구단을 화면에 출력해 보겠습니다 — 중첩 반복문은 이 작업에 완벽합니다. 중첩 반복문을 사용하여 구구단을 생성하는 것, 하나의 반복문은 곱하는 수에, 다른 하나는 곱하는 수에 해당합니다:
n = 5
for i in range(1, n + 1):
for j in range(1, n + 1):
print(f"{i} * {j} = {i * j}", end='\t')
print() # 다음 곱하는 수를 위한 줄바꿈
이 예제는 화면에 다음과 같은 테이블을 출력할 것입니다:
1 * 1 = 1 1 * 2 = 2 1 * 3 = 3 1 * 4 = 4 1 * 5 = 5
2 * 1 = 2 2 * 2 = 4 2 * 3 = 6 2 * 4 = 8 2 * 5 = 10
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9 3 * 4 = 12 3 * 5 = 15
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
중첩된 반복문을 더 잘 이해하려면 더 많은 연습이 필요합니다 — 이는 프로그래밍에서 거의 모든 비직관적인 것들을 마스터하는 가장 빠른 방법입니다.
GO TO FULL VERSION