TIL 11 | For & While Loops

Hyeonju L.·2020년 11월 23일
0

Python

목록 보기
7/9

1. For 구문

For Loops(for 구문)는 list, tuple, dictionary와 같은 자료구조의 요소를 한번에 하나씩 원하는 로직을 실행하도록 도와주는 역할을 한다.

1) For 구문 문법

for element in list:
	do_something_with_element

for 구문에서는 리스트가 가지고 있는 요소의 갯수만큼 for 구문에 속해있는 코드를 실행하며 이를 iteration이라고 한다. 예를 들어 리스트가 5개의 요소를 가지고 있으면 5 iterations라고 한다.

  • Break
    for 구문에서 끝까지 진행하지 않고 중간에서 멈추고 싶을 때는 break 사용.
    break문이 실행되면 다음 iteration으로 넘어가지 않고 for구문에서 빠져나오게 된다.

  • continue
    break처럼 for 구문에서 완전히 빠져나오고 싶진 않지만 다음 iteration으로 넘어가고 싶을 때 continue 사용.

2) For 구문의 중첩

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [10, 20, 30, 40, 50]

for num1 in numbers1:
	for num2 in numbers2:
    	print(f"{num1}*{num2} == {num1 * num2}")

3) for 구문 예제

  • 예제 1) input으로 주어진 리스트에서 오직 한번만 나타나는 값을 가지고 있는 요소 출력하기
my_list = [1, 2, 3, 4, 5, 1, 2, 3, 7, 9, 9, 7]
dic = {}

for element in my_list:
  if element not in dic:
    dic[element] = 1
  elif element in dic:
    dic[element] += 1
for i in dic:
   if dic[i] == 1:
    print(i)		# 결과: 4, 5
  • 예제 2) 주어진 단어에 포함된 모든 문자를 담고 있는 배열 반환하기
str_list = []
mission_str = "wecode"
 
for i in mission_str:	# 문자열에서도 for 구문 이용해 한글자씩 추출 가능
	str_list.append(i)
return str_list

2. Range

반복문을 통해 코드 수행을 여러번 할 수 있으며, range의 경우 시작조건, 종료조건, 스텝(optional)을 쓸 수 있다.

for in range(start_value, end_value, step)
  • Range(범위 함수)를 이용해 리스트에 0부터 4까지 넣어보기
my_list = []
for i in range(0,5):
	my_list.append(i)	# 결과: [0, 1, 2, 3, 4]
  • Range(범위 함수)를 이용해 리스트에 1부터 9까지 홀수만 넣어보기
my_list = []
for i in range(1,10,2)	# range(start_value, end_value, step)
	my_list.append(i)	# 결과: [1,3,5,7,9]
  • Range(범위 함수)를 이용해 리스트 요소의 총합 return 하는 함수 완성하기
my_list = [2,3,4,5,6]

sum = 0
for i in my_list:
	sum +=	i
return sum    

3. While Loops

특정 조건문이 True일 동안 코드블록을 반복 실행하는 구문

while <조건문>	# while 구문
      수행할 문장
  • Break & Continue
    for 구문과 마찬가지로 while문도 break와 continue가 있다.
number = 0

while number <= 10:		# number가 10 이하 = True
	if number == 9:		# 조건문 1) number가 9면 break
    	break
    elif number <= 5:		# 조건문 2) number가 5 이하인 경우 number에서 1씩 계속 더함
    	number += 1
        continue		# 결과: 1, 2, 3, 4, 5, 6
    else:			# 조건문 3) 조건문 1,2에 해당하지 않는 경우 해당 number 출력    	
    	print(number)		# 결과: 6,7,8
        number += 1
  • While - Else
    파이썬의 while문은 else문의 추가가 가능하며, if 구문의 else와 유사하다.
    while 구문의 else문도 if문과 같이 while의 조건문이 false이면 실행된다.
number = 0

while number <= 10:
    print(number)
    number += 1
else:
    print(f"while 문이 끝나고 난 후 의 number : {number}")
결과:  0
       1
       2
       3
       4
       5
       6
       7
       8
       9
       10
while 문이 끝나고 난 후 의 number : 11
  • 예시
    integer(정수) parameter 값을 가진 함수 구현하기. 함수는 parameter 값을 나눌 수 있는 1을 제외한 최소의 양의 정수를 return 해야함.
def find_smallest_integer_divisor(numb):
	
    a = 2
    while a > 1:
    	if numb % a != 0:
        	a += 1
	else:
        	return a

4. Looping Dictionary

list와 마찬가지로 dictionary도 for 구문을 이용해 반복되는 로직을 실행할 수 있다.
dictionary는 list와 다르게 각 요소가 keyvalue로 이루어져 있기 때문에, dictionary를 이용한 for 구문에서는 각 요소의 key만 리턴한다.

  • key가 아닌 value값으로 looping 하는 방법
    value값으로 for 구문을 실행하려면 values 함수 이용

  • keyvalue 두 개를 모두 이용하여 looping 하는 방법
    keyvalue 둘 다를 이용하여 for 구문 실행하려면 items 함수 이용
    Dictionary의 items 함수는 key와 value를 tuple로 리턴함

  • 예시
    input으로 주어진 list의 각 요소(element)가 리스트에 몇 번 나타나는 지 dictionary로 return하기
def get_occurrence_count(my_list):

    dic = {}
    for i in my_list:
    	if i not in dic:
        	dic[i] = 1
        elif i in dic:
        	dic[i] += 1
        return dic

5. Complex Dictionary

1) List of DIctionaries

여러개의 dictionary를 list로 합하여 정보를 표현하는 방법으로 for 구문을 이용하여 각각의 dictionary를 쉽게 읽을 수 있고 원하는 로직의 실행이 가능하다.

bts_members = [
{
    "실명" : "김남준",
    "가명" : "RM",
    "생년월일" : "1994년 9월 12일"
},
{
    "실명" : "김석진",
    "가명" : "진",
    "생년월일" : "1992년 12월 4일"
}
]

2) Nested Dictionary (Dictionary 중첩)

Dictionary 안에 dictionary를 중첩적으로 사용하면 원하는 데이터를 더 효과적으로 표현할 수 있다

bts_members = {
     "RM" : {
    	"실명" : "김남준",
    	"생년월일" : "1994년 9월 12일"
      },
     "진" : {
    	"실명" : "김석진",
    	"생년월일" : "1992년 12월 4일"
      }
}
print(bts_members["RM"]["생년월일"])
profile
What you think, you become. What you feel, you attract. What you imagine, you create.

0개의 댓글