본문 바로가기
#단편모음/낱 장

[혼공파] C04 반복문-230515月

by taeni 2024. 4. 16.

C04 반복문

04-1 리스트와 반복문

04-2 딕셔너리와 반복문

04-3 반복문과 while 반복문

04-4 문자열, 리스트, 딕셔너리와 관련된 기본 함수


 

04-1 리스트와 반복문    (p.157 마무리)

리스트list는 여러 가지 자료를 저장할 수 있는 자료형을 말합니다.

요소element 리스트 내부에 있는 각각의 내용을 의미합니다. 

인덱스index 리스트 내부에서 값의 위치를 의미합니다.

for 반복문 특정 코드를 반복해서 실행할 때 사용하는 기본적인 구문입니다.

 

04-2 딕셔너리와 반복문   (p.171 마무리)

딕셔너리dictionary  기반으로 여러 자료를 저장하는 자료형입니다.

키key는 딕셔너리 내부에서 값에 접근할 때 사용하는 것입니다.

값value은 딕셔너리 내부에 있는 각각의 내용을 의미합니다. 

 

04-3 반복문과 while 반복문   (p.187 마무리)

범위range 정수의 범위를 나타내는 값입니다. range() 함수로 생성합니다.

while 반복문 조건식을 기반으로 특정 코드를 반복해서 실행할 때 사용하는 구문입니다.

break키워드는 반복문을 벗어날 때 사용하는 구문입니다.

continue 키워드는 반복문의 현재 반복을 생략할 때 사용하는 구문입니다. 

 

04-4  문자열, 리스트, 딕셔너리와 관련된 기본 함수  (p.206 마무리)

enumerate() 함수 리스트를 매개변수로 넣을 경우 인덱스와 값을 쌍으로 사용해 반복문을 돌릴 수 있게 해주는 함수입니다.

items() 함수 키와 쌍으로 사용해 반복문을 돌릴 수 있게 해주는 딕셔너리 함수입니다.

리스트 내포는 반복문과 조건문을 대괄호[] 안에 넣는 형태를 사용해서 리스트를 생성하는 파이썬의 특수한 구문입니다. 'list comprehensions'도 기억해 주세요.


04-1 리스트와 반복문

하나의 값을 나타내는 자료형  문자열, 숫자, 불 등
여러 개의 값을 나타나게 해주는 자료형 리스트, 딕셔너리 등 

 

리스트 선언하고 요소에 접근하기 

리스트 : 목록

내부에 넣는 자료 : 요소 element  [요소, element, 요소...  ]

 

 리스트 연산자: 연결(+), 반복(*), len()

리스트에 요소 추가하기 : append, insert

<리스트 연결 연산자와 요소 추가의 차이> p.148

  기능
비파괴적 함수  non destructive function 원본 변화X하지 않는 함수 str 자료형의 lower(), upper(), split() ...
파괴적 함수     destructive function 원본 변화O하는 함수 list 자료형의 append(), remove(), pop()....

 

리스트에 요소 제거하기

● 인덱스로 제거하기 : del, pop

 

 

 값으로 제거하기 : remove

 모두 제거하기 : clear

 

 리스트 내부에 있는지 확인하기 : in / not in 연산자

값 in 리스트

      리스트 내부에 값이 있으면 True, 없으면 False 출력

 

for 반복문 

for 반복문 : 리스트와 함께 사용하기 

반복할 수 있는 것에는 문자열, 리스트, 딕셔너리, 범위 등이 있습니다.

for 반복문은 리스트에 있는 요소 하나하나가 element라는 변수에 들어가며, 차례차례 반복하게 된다.

print()함수로 element를 출력하므로 리스트의 요소를 차례차례 출력하게 된다.

 

p157 확인문제1

extend(), append(), insert()함수는 요소 추가 remove(), pop()함수는 요소 제거       

p157 확인문제2

반복문 내부에 if 조건문의 조건식을 채워서 100 이상의 숫자만 출력하기

p157 확인문제3

반복문 내부에 if 조건문의 조건식을 채워서 100 이상의 숫자만 출력하기

정수int 는 자릿수len()를 셀 수 없다.

문자열str 로 변환하고 나서야 비로소 자릿수len()를 사용할 수 있다.

 

p158 확인문제4⭐

리스트 안의 리스트의 원소하나씩 출력하기

가운데사진 이해 부족

 

p158 확인문제5

리스트의 인덱스는 1, 2, 3, 4와 같은 숫자를 입력할 수도 있지만, 1 + 2, 3 + 4 와 같은 수식을 입력할 수도 있습니다. 어떤 수식을 입력해야 할지 생각해 보기.  ⭐ 중첩 리스트의 중첩을 해제할 때 많이 사용되는 기술 

04-2 딕셔너리와 반복문

자료형 의미 가리키는 위치 선언 형식
리스트  인덱스를 기반으로 값을 저장 인덱스 변수 = []
딕셔너리  키를 기반으로 값을 저장 변수 = {}

딕셔너리 선언하기 

 

 

딕셔너리의 요소에 접근하기

구분 선언 형식 사용 예 틀린 예
리스트  list_a = [] list_a = [1]  
딕셔너리  dict_a = {} dict_a = ["name"] dict_a = {"name"}

 딕셔너리의 문자열 키와 관련된 실수

NameError : name이라는 이름이 정의되지 않았다는 오류이다. 

파이썬은 딕셔너리의 키에 단순한 식별자를 입력하면 이를 변수로 인식한다.

오류 자체를 해결하고 싶다면 3번째 사진처럼 name 이라는 변수로 만들어 주면 된다.

+ type은 type()함수라는 기본 식별자가 있기 때문에 이것이 키로 들어가 따로 오류를 발생하지는 않았다.

하지만 일반적으로 3번째 형태처럼 코드를 사용하는 경우는 별로 없기 때문에 2번째 사진처럼 key 를 ""따옴표로 잘 감싸주어 사용하도록 한다.

딕셔너리에 값 추가하기/제거하기

딕셔너리에 값을 추가할 때는 키를 기반으로 값을 입력하면 된다.

ex. 딕셔너리[새로운 키] = 새로운 값

 KeyError 예외

리스트의 길이를 넘는 인덱스에 접근하면 IndexError가 발생하듯이,

딕셔너리도 존재하지 않는 키에 접근하면 KeyError 가 발생합니다.

NameError : name이라는 이름이 정의되지 않았다는 오류

 

딕셔너리 내부에 키가 있는지 확인하기 

 in 키워드

 get 함수

 존재하지 않는 키에 접근하는 사옿ㅇ에 대한 2째 디처 방법으로는 딕셔너리의 get()함수를 사용하는 방법이 있다.

get()함수는 딕셔너리의 키로 값을 추출하는 기능으로 딕셔너리[키]를 입력할 떄와 같은 기능을 수행하지만, 존재하지 않는 키에 접근할 경우 KeyError를 발생시키지 않고 None을 출력합니다.

for 반복문 : 딕셔너리와 함께 사용하기 

p171 확인문제2

딕셔너리와 리스틀ㄹ 조합하면 다양한 정보를 축적할 수 있습니다.

p121 확인문제3⭐

numbers 내부에 들어 있는 숫자가 몇 번 등장하는지를 출력하는 코드

p171 확인문제4

파이썬은 다음과 같은 방법으로 특정 값이 어떤 자료형인지 확인할 수 있습니다.

type("문자열") is str   # 문자열인지 확인
type([]) is list   # 문자열인지 확인
type({}) is dict   # 딕셔너리인지 확인

 

04-3 반복문과 while 반복문 

범위

 첫째, 매개변수에 숫자를 한 개 넣는 방법

 둘째, 매개변수에 숫자를 두 개 넣는 방법

 셋째, 매개변수에 숫자를 세 개 넣는 방법

0부터 10까지의 범위를 생성하는데, 10을 반드시 포함해야 하낟는 것을 강조하고 싶을 때

for 반복문 : 범위와 함께 사용하기 

for 반복문 : 리스트와 범위 조합하기 

for 반복문 : 반대로 반복하기 

 3시 이후

프로그래밍을 하다보면 큰 숫자에서 자긍ㄴ 숫자로 반복문을 적용해야 하는 경우가 있다. (내림차순) 

이러한 반복문을 역반복문이라고 부르기도 하는데, 크게 2가지 방법을 사용해서 만든다.

(左)range()함수의 매개변수 가운데 자리에 -1을 입력해도 상관없지만, 0-1 라고 표기함으로써 "0까지 반복하고 싶ㅍ어서 이 코드르 사용했어"라고 강조하며 표현할 수 있다.     (右) reversed()함수를 이용하여 역반복문 만들기

while 반복문

while 불 표현식:
	문장

# <불 표현식>이 참True인 동안 문장을 계속 반복

while 반복문 : for 반복문처럼 사용하기

for 반복으로는 무한 반복을 구현할 수 없다.

그리고 while 반복문에서 가장 중요한 키워드는 '조건'.

조건을 활용해서 반복을 사용해야 한다면 while 반복문을 사용하는 것이 좋다.

while 반복문 : 시간을 기반으로 반복하기 

while 반복문 : break 키워드 / continue 키워드

반복문 내부에서만 사용할 수 있는 break와 continue라는 특수한 키워드가 있습니다.

● break키워드는 반복문을 벗어날 때 사용하는 키워드입니다. 일반적으로 무한 반복문을 만들고, 내부의 반복을 벗어날 때 많이 사용합니다. continue키워드는 현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용하는 키워드입니다.

 

p187 확인문제1  range(포함, 포함-1, 방향-1 | n배수)

코드 나타내는 값
range(5) [0, 1, 2, 3, 4]
range(4, 6) [4, 5]
range(7, 0, -1) [7, 6, 5, 4, 3, 2, 1]
range(3, 8) [3, 4, 5, 6, 7]
range(3, 9 + 1, 3) [3, 6, 9]

p188 확인문제2 키와 값으로 이루어진 각 리스트를 조합해 하나의 딕셔너리 만들기 

 

p188 확인문제3 1부터 숫자를 하나씩 증가시키면서 더하는 경우, 몇을 더할 때 10000을 넘고 그때의 값은?

ㄴ ※ 답지와 교재부분 내용 조금 상이함p189 1부터 100까지의 숫자가 있을 때 두 수의 합이 100이고 곱이 최대가 되는 경우는 어떤 숫자를 곱했을 때인가?

04-4 문자열, 리스트,  딕셔너리와 관련된 기본 함수

리스트에 적용할 수 있는 기본 함수 min(), max(), sum()
리스트 뒤집기 reversed()
현재 인덱스가 몇 번째인지 확인하기 enumerate()
딕셔너리로 쉽게 반복문 작성하기 items()
리스트 안에 for문 사용하기 리스트 내포

리스트에 적용할 수 있는 기본 함수 : min(), max(), sum()

함수  설명
min() 리스트 내부에서 최솟값을 찾습니다.
max() 리스트 내부에서 최댓값을 찾습니다.
sum() 리스트 내부에서 값을 모두 더합니다.

reversed() 함수로 리스트 뒤집기 

reversed()함수의 결과는 제너레이터이다.

제너레이터는 파이썬의 특별한 기능으로, 일단 reversed() 함수와 반복문 조합할 때는 함수의 결과를 여러 번 활용하지 않고 for 구문 내부에 reversed()함수를 곧바로 넣어서 사용한다.

 

enumerate() 함수와 반복문 조합하기 \

딕셔너리의 items() 함수와 반복문 조합하기 

enumerate() 함수와 반복문을 조합해서 for i, value in enumerate(리스트) 형태로 반복문을 작성할 수 있었던 것처럼

딕셔너너리는 items() 함수와 함 사용하면 키와 값을 조합해서 쉽게 반복문을 작성할 수 있습니다.

 

리스트 내포

수 있습니다.range(0, 20, 2)로 부터 0부터 20 사이의 짝수를 구한 뒤, 제곱해서 새로운 리스트를 만드는 코드.

# 리스트 내포
리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 ]

if 구문을 포함한 리스트 내포

# if 구문을 포함한 리스트 내포
리스트 이름 = [표현식 for 반복자 in 반복할 수 있는 것 if 조건문]

p.200~205 좀 더 알아보기 중략