1. for문 사용법
아주 간단한 문제를 풀어 봅시다.
- 0부터 10까지 출력해 주세요.
< 정답 코드 >
print(0)
print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
print(7)
print(8)
print(9)
print(10)
너무 귀찮지 않나요… 이런 반복되는 작업을 쉽게 하기 위해서 for을 사용합니다.
for 변수 in 이터러블 객체:
코드 ...
이터러블 객체를 한국말로 풀어 보면 반복가능한 객체를 의미합니다. 대표적으로 리스트가 있습니다.
for은 이터러블 객체에 저장되어 있는 요소를 첫번째 부터 꺼내서 변수에 저장합니다. 이후 for 내부에 적힌 코드를 실행 시킵니다. 코드가 끝이나면 다음 요소를 꺼내서 변수에 저장 시키고 코드를 다시 실행 시킵니다. 이 작업을 이터러블 객체 내에 저장된 요소가 끝날 때 까지 반복합니다.
for을 활용하여 문제를 풀어보면 아래 코드와 같습니다.
for i in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
print(i)
2. 편하게 리스트 만들자 : range
for문을 통해 편하게 반복을 하긴 하는데 리스트 직접 적는것 굉장히 불편하죠? range() 함수를 활용하면 쉽게 구현할 수 있습니다.
range(시작 값, 끝 값, 간격)
range를 설명하기 전에 어떻게 작동하는지 직접 코드를 실행해서 확인해 봅시다.
print(*range(3, 11, 1))
print(*range(3, 11))
print(*range(0, 11, 1))
print(*range(11))
print(*range(0, 11, 2))
print(*range(10, 0, -1))
range(3, 11, 1)은 “3부터 1씩 커지면서 11미만까지 반복된 range객체를 반환해라” 라는 명령입니다.
range(3, 11)은 range(3, 11, 1)과 의미가 똑같습니다. 간격이 1일때는 생략해서 사용하는 것이 일반적입니다.
range(0, 11, 1)은 “0부터 1씩 커지면 11미만 까지 반복된 range객체를 반환해라” 라는 명령입니다.
range(11)은 range(0, 11, 1)과 같은 의미 입니다. 간격이 1이어서 간격을 생략하고 심지어 0부터 시작하는 경우 시작값도 생략 가능합니다! (생략해서 사용하는 것이 일반적)
range(0, 11, 2)는 0부터 11미만까지 2씩 커지는 range객체를 반환해라 라는 의미 입니다. 이때는 0부터 시작하지만 간격이 1이 아니므로 0을 생략해서 사용할 수 없습니다.
range(10, 0, -1)은 10부터 시작해서 -1씩 커지면서 0미만 까지 반복된 객체를 반환해라 라는 명령어 입니다.
range를 활용하여 0 부터 10까지 출력하는 코드를 작성하면 아래와 같습니다.
for i in range(11):
print(i)
💡range객체
range() 함수는 정확히는 list를 객체를 만드는 것이 아니라 range() 객체를 만드는 것입니다. 둘 다 이터러블 객체의 한 종류이기에 for에 사용할 수 있습니다.
range를 활용하여 0~10까지 수가 든 리스트를 만들고 싶으면 아래와 같이 코드를 작성하면 됩니다.
list(range(11))
3. 콩떡이를 찾아주세요 : break
강아지 이름이 들어있는 dog_list가 주어집니다. 강아지 이름이 “손콩떡” 이면 “찾았다!”를 출력해 주세요. 강아지 이름이 “손콩떡”이 아니면 “~는 손콩떡이 아니야”라고 출력해 주세요. 손콩떡을 찾았으면 더 이상 찾을 필요 없으므로 출력을 멈춰야 합니다.
dog_list = ["제리", "튼튼이", "김대호", "킹율", "히렌", "돌이", "손콩떡", "티아"]
# 코드를 작성해 주세요.
< 정답 코드 >
is_find = False
for name in dog_list:
if not is_find: #아직 찾지 못했음
if name == "손콩떡": # 손콩떡 찾음
print("찾았다!")
is_find = True
else: # name이 손콩떡이 아니라면
print(f"{name}는 손콩떡이 아니야")
이렇게 is_find를 활용하면 현재 손콩떡을 찾았는지 못찾았는지 확인하고 흐름을 제어할 수 있습니다. 이런 변수를 플래그 라고 합니다.
하지만 break를 활용하면 훨씬 간결하게 코드를 작성할 수 있습니다.
for name in dog_list:
if name == "손콩떡":
print("찾았다!")
break
print(f"{name}는 손콩떡이 아니야")
for이 코드를 반복하다가 break 명령을 만나면 for문 실행을 종료 시킵니다. 즉, break는 반복문에서 특정 조건이 완성되었을 때 반복을 중지 시키고 싶을 때 사용합니다.
4. 영화관 좌석 : continue
선호는 ‘미키17’을 관람하기 위해서 홀로 영화관에 방문했습니다. 영화관은 특이한 좌석제를 운영하고 있었습니다. 선호가 앉을 수 있는 좌석 번호를 모두 알려주세요.
< 영화관 좌석제 규칙 >
1. 5의 배수 좌석은 VIP 좌석으로 예약이 불가능 합니다.
2. 1과 2는 커플석 입니다. 커플석은 10칸마다 존재합니다.(다음 커플석은 11, 12)
3. 1부터 50까지 50좌석을 가지고 있습니다.
< 정답 코드 >
for i in range(1, 51):
if (i % 5 != 0) : # vip 가 아닌곳
if (i % 10 != 1) and (i % 10 != 2): # 커플석이 아닌곳
print(i)
continue를 활용하면 훨씬 직관적으로 코드를 작성 할 수 있습니다.
for은 continue를 만나면 이번 반복은 넘어가고 다음 반복을 진행해 라고 인식합니다. 따라서 continue는 if문과 함께 잘 사용합니다.
for i in range():
if ~ :
continue
이렇게 if 문과 함께 사용하면 “어떤 조건을 만족하면 이번 반복은 넘어가고 다음으로 진행해” 라는 명령을 내릴 수 있습니다.
문제에서 continue를 적용해 보면 아래와 같습니다.
for i in range(1, 51):
if i % 5 == 0: # 5의 배수면 VIP석이니깐 다음 진행해
continue
if (i % 10) == 1 or (i % 10) == 2: # 1의 자리수가 1 또는 2이면 커플석이니깐 다음으로 진행해
continue
print(i)
'파이썬 기초' 카테고리의 다른 글
| [ 파이썬 기초 ]16. while 문 (0) | 2025.03.14 |
|---|---|
| [ 파이썬 기초] 15. for문 핵심 문제 (0) | 2025.03.14 |
| [ 파이썬 기초 ] 13. 튜플 & 집합 (2) | 2025.03.06 |
| [ 파이썬 기초 ] 12. 딕셔너리 (해쉬) (0) | 2025.03.06 |
| [파이썬 기초] 10. 리스트 (0) | 2025.02.28 |