제어문
Range
- 반복문에서 많이 쓰일 range 알고가기
range(시작 숫자, 끝 숫자(포함X), 스탭지정)
- 숫자의 리스트를 나타내기 위해 사용
- 변경이 불가능하며, 반복 가능
num_list = range(11)
print(num_list)
# range(0, 11)
print(type(num_list))
# <class 'range'>
- 0에서 11미만의 숫자를 포함하는 range 객체를 만듦.
- 🕵 0~10까지의 숫자 리스트를 출력하는 것이 아님
range 리스트로 표현
num_list = range(11)
print(list(num_list))
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
- 리스트에 담아줘야지 0~10까지의 숫자 리스트를 만듦.
예제 1
- 5부터 10까지 숫자 리스트 출력하기
num_list1 = range(5,11)
print(list(num_list1))
# [5, 6, 7, 8, 9, 10]
- 1~10까지 홀수의 리스트 출력하기
num_list2 = range(1,11,2)
print(list(num_list2))
# [1, 3, 5, 7, 9]
range 역순
range(시작 숫자, 끝 숫자(포함X), -1)
- 스탭을 -1로 주어 시작 숫자부터 -1씩 증가시킴
예제2
- 10부터 1까지 리스트
num_list1 = range(10,0,1)
print(list(num_list1))
# []
num_list2 = range(10,0,-1)
print(list(num_list2))
# [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
- 1~10까지 짝수를 내림차순으로 정렬한 리스트
num_list3 = range(10,0,-2)
print(list(num_list3))
# [10, 8, 6, 4, 2]
반복문
for문
- 시퀀스(string, tuple, list, range)를 포함한 순회가능한 객체요소를 모두 순회함
- 형식
for 변수명 in iterable :
# 실행할 코드 블록
- iterable : 반복 가능한 객체를 뜻함.
- 순회 가능한 객체 : 컨테이너형(문자열, 리스트, 튜플, range, set, dictionary)
for fruit in ['mango', 'banana', 'apple'] :
print(fruit)
print("과일 종류 끝")
'''
mango
banana
apple
과일 종류 끝
'''
문자열 요소 하나씩 순회하기
chars = 'Hello'
for char in chars:
print(char, end = '/')
# H/e/l/l/o/
- 1번째 순회
- 'Hello' 문자열 중 첫번째 요소인 'H'가 char이 됨.
- print('H', end = '/') : 출력할 요소('H') 뒤에 /로 구분 짓음.
- 1번째 순회 하듯 'o'까지 순회를 반복하면서 출력함.
문자열 요소 하나씩 순회하기 - range 활용
chars = 'Hello'
for index** in range(len(chars)):
print(chars[index], end = '/')
# H/e/l/l/o/
range(len(chars)
- len : 문자열의 길이를 반환함.
- len(chars)는 5임
- range(5)는 0 1 2 3 4 임으로 chars의 index로 활용 함.
- 1번째 순회
- for 0 in 0,1,2,3,4** 임으로 chars[0]인 'H'가 출력됨.
- 마지막 인덱스인 4까지 반복됨
** index를 idx 또는 i로 줄여서 쓰기도 함.
** range(5)는 객체지만 이해를 위해 대략적으로 적음.
문자열 요소 하나씩 순회하기 - enumerate() 활용
- enumerate
- 몇 번째 반복문인지 확인하기 위해 사용
- 인덱스 번호와 순회할 객체의 원소를 tuple 형태로 반환함.
chars = 'Hello'
for c in enumerate(chars):
print(c)
'''
(0, 'H')
(1, 'e')
(2, 'l')
(3, 'l')
(4, 'o')
'''
예제 3
- tuple 형태로 반환하는 것을 이용하여 인덱스 번호와 해당 요소 출력하기
chars = 'Hello'
for i,char in enumerate(chars):
print(f'{char}요소의 인덱스 번호는 {i}이다.')
'''
H요소의 인덱스 번호는 0이다.
e요소의 인덱스 번호는 1이다.
l요소의 인덱스 번호는 2이다.
l요소의 인덱스 번호는 3이다.
o요소의 인덱스 번호는 4이다.
'''
for문과 if문 활용하기
- word에 'a'가 있으면 1를 출력한다.
# 방법1
word = 'apple'
for char in word :
if char == 'a':
print(1)
# 1
# 방법2
if 'a' in word:
print(1)
# 출력없음
while문
- 조건식이 참인 경우 반복적으로 코드 블록 실행.
- 코드 블록이 모두 실행 후, 다시 조건식을 검사하며 반복적으로 실행.
- 종료조건에 해당하는 코드를 통해 반복문을 종료시켜야 함.
- 🕵 주의! 종료 조건 없으면 무한루프에 빠짐
while 표현식:
# true일때 실행할 코드 블록
예제 4
- 1부터 사용자가 입력한 양의 정수까지의 총합을 구하는 코드 작성
user_num = int(input('정수를 입력하세요 > ')) # 5
num_start = 1
sum = 0
while num_start <= user_num : # num_start가 user_num 를 초과되면 반복 종료
sum += num_start # sum에 num_start를 누적해서 더해주고
num_start += 1 # num_start 1씩 증가
print(sum) # 15
- for문으로 코드 구현하기
user_num = int(input('정수를 입력하세요 > ')) # 5
num_start = 1
sum = 0
for number in range(1,user_num+1): # 1~user_num까지 숫자 객체를 만들어서 number가 요소를 순회함.
sum += number # sum에 number를 누적합 시킴
print(sum) # 15 # 반복이 종료되고 sum을 출력함
반복제어
break
- 반복종료
for i in range(10):
if i > 1:
print('0과 1만 필요해!!')
break
print(i)
'''
0
1
0과 1만 필요해!!
'''
- 첫번째 i인 0은 if문 조건에 해당하지 않아서 i가 출력됨.
- 두번째 i인 1은 if문 조건에 해당하지 않아서 i가 출력됨.
- 세번째 i인 2은 if문 조건에 해당되므로 '0과 1만 필요해!!'이 출력되고 break문을 만나 반복이 종료됨.
continue
- 다음 반복을 실행 / continue 아래의 코드 블록을 실행하지 않고 다음 반복을 실행한다.
for i in range(1,11):
if i % 2 != 0:
continue
print(i)
'''
2
4
6
8
10
'''
- 첫번째 i인 1은 if문 조건에 해당되므로 continue문을 만나 다음 코드인 print(i)를 실행하지 않고 다음 반복으로 넘어감.
- 두번째 i인 2는 if문에 해당되지 않으므로 print(i)를 실행해 출력함
for-else
- 끝까지 반복문 실행 이후 else문 실행
- 만약 break를 통해 중간 종료 시 else문 실행X
for char in 'apple':
if char == 'b':
print('b가 있습니다.')
break
else:
print('b가 없습니다.')
# b가 없습니다.
- 'apple'의 요소들 중 'b'는 없으니 조건문을 만나지 않고 else문 실행함.
for char in 'banana':
if char == 'b':
print('b가 있습니다.')
break
else:
print('b가 없습니다.')
# b가 있습니다.
- 'banana'의 요소들 중 'b'가 있어 조건문을 통과하고 break문을 만남.
- break는 바로 반복이 종료됨으로 else문을 실행하지 않고 반복 종료.
출처 - 멀티캠퍼스(hypergrowth) 자료, https://docs.python.org/ko/3.12/library/stdtypes.html?highlight=range#range
[Built-in Types
The following sections describe the standard types that are built into the interpreter. The principal built-in types are numerics, sequences, mappings, classes, instances and exceptions. Some colle...
docs.python.org](https://docs.python.org/ko/3.12/library/stdtypes.html?highlight=range#range)
'개발언어 > python' 카테고리의 다른 글
comprehension (0) | 2023.01.14 |
---|---|
python 문자열 뒤집는 3가지 방법 - reversed / [::-1] / for (0) | 2023.01.04 |
가장 많이 쓰이는 print 공식문서로 톺아보기 (0) | 2023.01.04 |
if문 - if문/ 복수 if문 / 이중 if문 (2) | 2023.01.03 |
String Formatting - %-formatting / f-string / format 함수 (0) | 2023.01.03 |
댓글