[Python] 파이썬

[Python] 제어문 - 반복문 (while, for)

ITsubin 2022. 7. 30. 12:35

반복문

> 어떠한 수행 작업을 반복해서 수행해야 할 때 사용.

while / for


{ while문 형식 }

while 조건식:
    반복실행문

> 조건식의 결과가 True이면 while문을 실행

> 반복문 실행이 종료되면 다시 조건식으로 이동

> 조건식의 결과가 False이면 더 이상 반복 실행문을 실행하지 않음

> while문은 주로 횟수가 정해지지 않은 연산을 진행하거나,

   특정 동작이 지속될 때 사용

> while문의 내부에 또 다른 while문이 나타나는 것을 중첩 while문이라고 함.

 

total = 0
i = 1

while i < 5:
  total += i
  i += 1
  
print(total)
i = 1
while i <= 10:
  print(f'{i}: hello world')
  i += 1
while True:
  password = int(input('비밀번호를 입력해주세요 >> '))

  if password == 486:
    print('정답')
    break
  else:
    print('오답')
i = 0
while i <= 2:
  print('outer')
  j = 0
  while j <= 3:
    print('inner')
    j += 1
  i += 1

{ for문 형식 }

for 변수 in 반복가능객체:
    반복실행문

> 값의 범위나 횟수가 정해져 있을 때 사용.

> while문에 비해 자주 사용되는 반복문.

> for문은 조건식이 존재하지 않고, "변수"와 "반복 가능 객체"만 사용


반복 가능 객체?

> 여러 개의 데이터를 저장하고 있는 객체

> for문에서 사용되는 반복 가능한 주요 객체는 다음과 같음.

구분 자료형 예제
sequence str 'hello'
list [1, 2, 3]
tuple (1, 2, 3)
range range(100)
non-sequence set {1, 2, 3}
dict {'a': 'apple', 'b': 'banana'}

{ Sequence와 for문 }

  • str
for 문자 in 문자열:
    반복실행문

> for문과 문자열을 함께 사용하면 문자열 각 요소를 순차적으로 하나씩 꺼내서 사용 가능.

 

for char in 'apple':
  print(char)
password = input('비밀번호 입력 >> ')

char_count = 0
num_count = 0

for char in password:
  if char.isalpha():
    char_count += 1
  elif char.isdecimal():
    num_count += 1

if (char_count>=1) and (num_count>=1):
  print('가능한 비밀번호')
else:
  print('불가능한 비밀번호')

 

  • list
for 요소 in 리스트:
    반복실행문

> for문과 리스트를 활용하면 리스트의 각 요소를 순차적으로 하나씩 꺼내서 사용 가능. (이를 "리스트 순회"라고 함.)

> 리스트 생성 시 for문을 유용하게 사용 가능.

> 리스트 내부에 for문을 포함하는 리스트 내포(List Comprehension)을 사용하면 리스트를 쉽게 생성 가능

[표현식 for 변수 in 반복가능객체]

 

for fruit in ['apple', 'banana', 'kiwi']:
  print(fruit)

 

  • tuple
for 요소 in 튜플:
    반복실행문

> for문과 튜플을 활용하면 튜플의 각 요소를 순차적으로 하나씩 꺼내서 사용 가능

for fruit in ('apple', 'banana', 'kiwi'):
  print(fruit)

 

 


  • range
range(초깃값, 종료값, 증감값)

> range() 함수는 정수 범위를 만들어 낼 때 유용한 함수

> range 함수 구성 요소는 다음과 같은 특징을 지님

 

     range 함수 구성요소의 특징

  1) 초깃값부터 종료값 이전까지 숫자 n의 컬렉션을 생성 (초깃값 <=  n < 종료값)

  2) 초깃값 생략 가능 (생략 시 초깃값은 0)

  3) 종료값 생략 불가

  4) 증감값 생략 가능 (생략 시 증감값은 1)

 

> range를 통해 값을 생성하면 어떤 값이 생성되었는지 바로 확인 불가

> 위와 같은 경우, list와 같은 시퀀스 자료형을 통해 변환해야 함.

print(range(1, 100))
print(list(range(1, 100))) # 값을 확인하기 위해서는 list 등을 사용
print(list(range(1, 100, 2)))
print(range(1, 100)[10:13]) # 슬라이싱
print(range(100)) # 시작값 생략 가능, 이 경우 종료값으로 인식
evens = []
for i in range(100):
  if (i%2) == 0:
    evens.append(i)

print(evens)
for i in range(13):
  print(f'{i+1}: hello world')

{ Non-Sequence와 for문 }

  • set
for 요소 in {세트}:
    반복실행문

> for문과 세트를 활용하면 세트의 각 요소를 순서에 상관 없이 하나씩 꺼내서 사용 가능

 

for fruit in {'apple', 'banana', 'kiwi'}:
  print(fruit)

 


  • dict
#1번
key 요소만 접근할 경우
for key in {딕셔너리}:     반복실행문
그러나 명확한 전달을 위해 아래와 같이 사용을 권함

for key in {딕셔너리}.keys():
    반복실행문

#2번
value 요소만 접근할 경우
for key in {딕셔너리}.values():
    반복실행문

#3번
key, value 요소 모두 접근할 경우
for key, value in {딕셔너리}.items():
    반복실행문

> for문과 딕셔너리를 활용하면 딕셔너리의 각 Key, Value를 하나씩 꺼내서 사용 가능

 

person = {'name': '에밀리', 'age': 20}

for key in person:
  print(key)
person = {'name': '에밀리', 'age': 20}

for key in person.keys():
  print(key)
person = {'name': '에밀리', 'age': 20}

for value in person.values():
  print(value)
person = {
    '국어': 90, 
    '영어': 60,
    '수학': 50,
    '사회': 90,
    '과학': 100
    }

for item in person.items():
  if item[1] < 70:
    print(item[0])

print('---------')

for key, value in person.items():
  if value < 70:
    print(key)

 

'[Python] 파이썬' 카테고리의 다른 글

[Python] 파이썬 내장 함수 - 문자열 함수  (0) 2022.08.01
[Python] 기타 제어문  (0) 2022.07.31
[Python] 제어문 - 조건문 (if)  (0) 2022.07.29
[Python] 연산자 우선순위?  (0) 2022.07.28
[Python] 연산자 [5 ~ 7]  (0) 2022.07.28