본문 바로가기
코딩 공부/파이썬 (혼공단 11기)

[혼공파] 3주차_04

by 루담 2024. 1. 21.

👩🏻‍💻 ,,,,족장님이 3주차가 젤 힘들거라고 하더니, 진짜다...

일주일 내내 독감인지 감기인지 한참 앓아 눕다가 그날까지 겹쳐서 진짜 죽다 살아났다,,🤕

하지만 뭐 이것도 다 변명일 뿐,, 할려고 했으면 했겠지,,,

 

 

반성 끝. 4주차 부터는 다시 부지런히 하자고 나자신!

암튼 3주차도 고고 ~

 

 


[기본 미션]

Q) 리스트, 딕셔너리, 범위 자료형에 대해 포스팅하기

 

04-1. 리스트와 반복문
▷핵심 키워드 - 리스트 / 요소 / 인덱스 / for 반복문

 

 

✍🏻리스트: 독립적인 자료들을 모아서 사용할 수 있게 해주는 특별한 형태의 자료

👉🏻리스트는 대괄호[] 내부에 여러 종류의 자료를 넣어 선언한다

 

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

-파이썬에서 리스트 생성하는 방법: 대괄호[]에 자료를 쉼표로 구분해서 입력한다.

-요소(element): 대괄호[] 내부에 넣는 자료

[요소, 요소, 요소...]

 

-리스트는 한 가지 자료형만으로 구성할 수 있고, 여러 종류의 자료형으로 구성할 수도 있다.

>>>[1,2,3,4]
[1,2,3,4]  #숫자만으로 구성된 리스트

>>>["안","녕","하","세","요"]
['안','녕','하','세','요']  #문자열만으로 구성된 리스트

>>>[273,32,103,"문자열",True,False]
[273,32,103,'문자열',True,False]  #여러 자료형으로 구성된 리스트

 

-리스트의 요소는 0부터 센다.

list_a=[273,32,103,"문자열",True,False]

 

273 32 103 문자열 True False
[0] [1] [2] [3] [4] [5]
>>>list_a=[273,32,103,"문자열",True,False]
>>>list_a[0]
273
>>>list_a[1]
32
>>>list_a[2]
103
list_a[1:3]
[32,103]

 

-리스트의 특정 요소는 변경할 수 있다.

>>>list_a=[273,32,103,"문자열",True,False]
>>>list_a[0]="변경"
>>>list_a
['변경',32,103,'문자열',True,False]

 

🌟리스트 사용방법

 

대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할 수 있다.

>>>list_a=[273,32,103,"문자열",True,False]
>>>list_a[-1]
False
>>>list_a[-2]
True
>>>list_a[-3]
'문자열'
273 32 103 문자열 True False
[-6] [-5] [-4] [-3] [-2] [-1]

 

리스트 접근 연산자를 이중으로 사용할 수 있다.

>>>list_a=[273,32,103,"문자열",True,False]
>>>list_a[3]
'문자열'
>>>list_a[3][0]
'문'

👉🏻list_a[3]을 지정하면 '문자열'을 꺼내오고, list_a[3][0]을 지정하면 3번째에서 가져온 "문자열"에서 다시 0번째를 가져와 출력한다.

 

리스트 안에 리스트를 사용할 수도 있다.

>>>list_a=[[1,2,3],[4,5,6],[7,8,9]]
>>>list_a[1]
[4,5,6]
>>>list_a[1][1]
5

 

👻 리스트에서 IndexError 예외

-IndexError: 리스트의 길이를 넘는 인덱스로 요소에 접근하려 할 때 발생하는 예외 👉🏻 요소가 존재하지 않는 위치에서 요소를 꺼내려고 하니 예외가 발생하는 것

<예제>

list_a=[273, 32, 103]
list_a[3]

-결과

리스트에 [3]번째 요소가 없으므로 예외가 발생하는 것

 

✏️리스트 연산하기: 연결(+), 반복(*), len()

-문자열과 리스트는 비슷한 자료형으로, 사용할 수 있는 연산자와 함수도 비슷하다

 

🖐🏻직접 해보는 손코딩🖐🏻

#리스트를 선언합니다.
list_a=[1,2,3]
list_b=[4,5,6]

#출력합니다.
print("#리스트")
print("list_a=",list_a)
print("list_b=",list_b)
print()

#기본 연산자
print("#리스트 기본 연산자")
print("list_a+list_b=",list_a + list_b)
print("list_a*3",list_a * 3)
print()

#함수
print("#길이 구하기")
print("len(list_a)=",len(list_a))

-결과

 

✏️리스트에 요소 추가하기: append(), insert()

-리스트에 요소를 추가할 때는 두 가지 방법: append(), insert()

 

append() 함수 활용 - 리스트 뒤에 요소를 추가

리스트명.append(요소)

 

insert() 함수 활용 - 리스트의 중간에 요소를 추가

리스트명.insert(위치, 요소)

 

🖐🏻직접 해보는 손코딩🖐🏻

#리스트를 선언합니다.
list_a=[1,2,3]

#리스트 뒤에 요소 추가하기
print("#리스트 뒤에 요소 추가하기")
list_a.append(4)
list_a.append(5)
print(list_a)
print()

#리스트 중간에 요소 추가하기
print("#리스트 중간에 요소 추가하기")
list_a.insert(0, 10)
print(list_a)

-결과

👉🏻append() 함수는 현재의 리스트 뒤쪽에 요소를 추가하는 것으로, list_a=[1,2,3]의 뒤에 4와 5가 추가되어 list_a=[1,2,3,4,5]가 된 것

👉🏻insert() 함수는 괄호 안에서 정해 준 위치에 요소를 삽입하는 것으로, 해당 위치의 요소는 뒤로 하나씩 밀려 list_a=[10,1,2,3,4,5]가 되는 것

 

📋한 번에 여러 요소를 추가하고 싶을 때extend() 함수를 사용한다.

-extend() 함수: 매개변수로 리스트를 입력하는데, 원래 리스트 뒤에 새로운 리스트의 요소를 모두 추가한다

>>>list_a=[1,2,3]
>>>list_a.extend([4,5,6])      #매개변수를 리스트 형태로 넣음
>>>print(list_a)
[1,2,3,4,5,6]

 

👻리스트 연결 연산자와 요소 추가의 차이

-리스트 연결 연산자와 extend() 함수는 리스트와 리스트를 연결한다는 기능에서 비슷한 형태로 동작한다

⚠️하지만 리스트 연결 연산자는 원본에 어떠한 영향도 주지 않지만, extend() 함수는 원본에 직접적으로 영향을 준다.

-리스트 연결 연산자: 비파괴적

-append(), insert(), extend() 함수: 파괴적

👉🏻자료는 선택지가 더 넓어지는 측면에서 비파괴적으로 사용하는 것이 편리하다. 하지만 그렇게 되면 리스트의 용량이 매우 커질 수 있다.

 

✏️리스트에 요소 제거하기

  • 인덱스로 제거하기
  • 으로 제거하기

 

👻인덱스로 요소 제거하기: del 키워드, pop()

del 리스트명[인덱스]

👆🏻del 키워드리스트의 특정 인덱스에 있는 요소를 제거한다.

 

리스트명.pop(인덱스)

👆🏻pop() 함수제거할 위치에 있는 요소를 제거 / 매개변수를 입력하지 않으면 -1이 들어가는 것으로 취급해서 마지막 요소를 제거한다.

 

🖐🏻직접 해보는 손코딩🖐🏻

list_a=[0,1,2,3,4,5]
print("#리스트의 요소 하나 제거하기")

#제거방법[1] - del 키워드
del list_a[1]
print("del list_a[1]:",list_a)

#제거방법[2] - pop()
list_a.pop(2)
print("pop(2):",list_a)

-결과

 

📋del 키워드를 사용할 경우에는 범위를 지정해 리스트의 요소를 한꺼번에 제거할 수도 있다.

>>>list_b=[0,1,2,3,4,5,6]
del list_b[3:6]
>>>list_b
[0,1,2,6]

>>>list_c=[0,1,2,3,4,5,6]
>>>del list_c[:3]     #[:3]은 3을 기준(3번째 불포함)으로 왼쪽을 모두 제거하는 것
>>>list_c
[3,4,5,6]

 

👻값으로 제거하기: remove()

리스트.remove()
>>>list_c=[1,2,1,2]
>>>list_c.remove(2)
>>>list_c
[1,1,2]

👆🏻 remove() 함수로 지정한 값이 내부에 여러 개 있어도 가장 먼저 발견되는 하나만 제거한다

 

👻모두 제거하기: clear()

리스트.clear()
>>>list_d=[0,1,2,3,4,5]
>>>list_d.clear()
>>>list_d
[]

👆🏻요소가 모두 제거됨

 

✏️리스트 정렬하기: sort()

-기본 오름차순 정렬로 리스트 요소가 정렬된다

리스트.sort()
>>>list_e=[52,273,103,32,275,1,7]
>>>list_e.sort()   #오름차순 정렬
>>>list_e
[1,7,32,52,103,273,275]

>>>list_e.sort(reverse=True)   #내림차순 정렬
>>>list_e
[275,273,103,52,32,7,1]

📋지금까지 살펴보았던 모든 리스트의 함수들은 파괴적으로 동작한다

 

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

-in 연산자를 활용해 특정 값이 리스트 내부에 있는지 확인할 수 있다

in 리스트
>>>list_a=[273,32,103,57,52]
>>> 273 in list_a
True
>>> 99 in list_a
False
>>>100 in list_a
False
>>>52 in list_a
True

👆🏻리스트 내부에 값이 있으면 True, 없으면 False를 출력한다

 

📋not in 연산자 - in 연산자와 정확하게 반대로 동작한다

list_a=[273,32,103,57,52]
>>>273 not in list_a
False
>>>99 not in list_a
True
>>>100 not in list_a
True
>>>52 not in list_a
False
>>>not 273 in list_a
False

👉🏻not in 연산자를 사용하는 것이 훨씬 읽기 쉽다.

 

✏️for 반복문

-코드를 100번, 1000번 또는 무한하게 반복 작업하고 싶을 때 붙여넣기를 하는 것은 무리가 있다. 이럴 때 for 반복문을 사용한다

for i in range(100):
    print("출력")

👆🏻출력을 100번 반복한다.

 

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

👇🏻for 반복문의 기본형태

for 반복자 in 반복할 수 있는 것:
    코드

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

 

🖐🏻직접 해보는 손코딩🖐🏻

#리스트를 선언합니다.
array = [273, 32, 103, 57, 52]

#리스트에 반복문을 적용합니다.
for element in array:
    #출력합니다.
    print(element)

-결과

 

+) for 반복문은 문자열과 함께 사용할 수도 있다.

for character in "안녕하세요":
    print("-",character)

-결과

 

✏️중첩 리스트와 중첩 반복문

-중첩 반복문은 일반적으로 n-차원 처리를 할 때 사용한다.

중첩 리스트 표현: list_of_list / 리스트가 2번 중첩되어 있으므로 2차원 리스트라고도 한다

 

🖐🏻직접 해보는 손코딩1🖐🏻

-2차원 리스트에 반복문 한번 사용

list_of_list = [
    [1,2,3],
    [4,5,6,7],
    [8,9]
]

for items in list_of_list:
    print(items)

-결과

 

🖐🏻직접 해보는 손코딩2🖐🏻

-2차원 리스트에 반복문 두번 사용

list_of_list = [
    [1, 2, 3],
    [4, 5, 6, 7],
    [8, 9]
]

for items in list_of_list:
    for item in items:
        print(items)

-결과

 

 

4-1 chapter 마무리

 

🔎핵심 포인트

-리스트는 여러가지 자료를 저장할 수 있는 자료형

-요소는 리스트 내부에 있는 각각의 내용

-인덱스는 리스트 내부에서 값의 위치

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

 

 


[선택 미션]

Q) 1번 문제의 답을 쓰고 인증하기

 

 

 


04-2. 딕셔너리와 반복문
▷ 핵심 키워드 - 딕셔너리 / 키 / 값

 

 

✍🏻리스트가 '인덱스를 기반으로 값을 저장하는 것'이라면, 딕셔너리는 '키를 기반으로 값을 지정하는 것'

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

 

✏️딕셔너리 선언하기

-딕셔너리는 중괄호{}로 선언하며, 키:값 형태를 쉼표(,)로 연결해서 만든다.

-키는 문자열, 숫자, 불 등으로 선언할 수 있다. / 일반적으로는 문자열로 사용하는 경우가 많다.

>>>dict_a = {
...           "name" : "어벤저스 엔드게임",
...           "type" : "히어로 무비"
...           }

 

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

>>>dict_a = {
...           "name" : "어벤저스 엔드게임",
...           "type" : "히어로 무비"
...           }
>>>dict_a
{'name' : '어벤저스 엔드게임', 'type' : '히어로 무비'}
>>>dict_a["name"]
'어벤저스 엔드게임'
>>>dict_a["type"]
'히어로 무비'

 

📋딕셔너리를 선언할 때는 중괄호{} 사용 / 딕셔너리의 요소에 접근할 때는 리스트처럼 딕셔너리 뒤에 대괄호[]를 입력하고 내부에 인덱스처럼 키를 입력해야 한다.

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

 

🖐🏻직접 해보는 손코딩🖐🏻

#딕셔너리를 선언한다.
dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고","설탕","메타중아황산나트륨","치자황색소"],
    "origin" : "필리핀"
}

#출력한다.
print("name:",dictionary["name"])
print("type:",dictionary["type"])
print("ingredient:",dictionary["ingredient"])
print("origin:",dictionary["origin"])
print()

#값을 변경한다.
dictionary["name"] = "8D 건조 망고"
print("name:",dictionary["name"])

-결과

 

+) ingredient는 dictionary의 키이기도 하지만, 여러 개의 자료를 가지고 있는 리스트이기도 하므로 인덱스를 지정하여 리스트 안의 특정 값을 출력할 수도 있다.

>>>dictionary["ingredient"]
['망고', '설탕', '메타중아황산나트륨', '치자황색소']
>>>dictionary["ingredient"][1]
'설탕'

 

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

dict_key = {
    name : "7D 건조 망고",
    type : "당절임"
}

-결과

👉🏻name이라는 이름이 정의되지 않았다는 오류 / 파이썬은 딕셔너리의 키에 따옴표 없이 단순하게 식별자를 입력하면 이를 변수로 인식하게 된다. 아래와 같이 name이라는 이름을 변수로 만들어 주면 해결된다.

name = "이름"
dict_key = {
    name : "7D 건조 망고",
    type : "당절임"
}

print(dict_key)

-결과

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

 

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

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

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

<예제>

dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고","설탕","메타중아황산나트륨","치자황색소"],
    "origin" : "필리핀"
}

dictionary["price"] = 5000

print(dictionary)

-결과

마지막 위치에 price키가 추가되었다.

 

-딕셔너리의 요소를 제거할 때에는 del 키워드를 사용한다.

<예제>

dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고","설탕","메타중아황산나트륨","치자황색소"],
    "origin" : "필리핀"
}

dictionary["price"] = 5000
del dictionary["ingredient"]

print(dictionary)

-결과

ingredient 키가 제거되었다.

 

🖐🏻직접 해보는 손코딩1🖐🏻

-딕셔너리에 요소 추가하기

#딕셔너리를 선언합니다.
dictionary = {}

#요소 추가 전에 내용을 출력해봅니다.
print("요소 추가 이전:", dictionary)

#딕셔너리에 요소를 추가합니다.
dictionary["name"] = "새로운 이름"
dictionary["head"] = "새로운 정신"
dictionary["body"] = "새로운 몸"

#출력합니다.
print("요소 추가 이후:",dictionary)

-결과

 

🖐🏻직접 해보는 손코딩2🖐🏻

-두 개의 요소를 가진 딕셔너리를 선언하고, 이 두 요소를 제거해보기

#딕셔너리를 선언합니다.
dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임"
}

#요소 제거 전에 내용을 출력해봅니다.
print("요소 제거 이전:",dictionary)

#딕셔너리의 요소를 제거합니다.
del dictionary["name"]
del dictionary["type"]

#요소 제거 후에 내용을 출력해봅니다.
print("요소 제거 이후:",dictionary)

-결과

 

👻KeyError 예외

-존재하지 않는 키에 접근하면 KeyError가 발생한다.

>>>dictionary = {}
>>>dictionary["Key"]
⚠️오류 발생

👉🏻딕셔너리는 키를 기반으로 값을 저장하므로 에러가 발생하는 것

 

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

-딕셔너리에 존재하지 않는 키에 접근하면 KeyError가 발생할 수도 있으므로, 존재하는 키인지 아닌지를 확인할 수 있는 방법이 필요하다.

 

① 첫 번째 방법: in 키워드

-사용자로부터 접근하고자 하는 키를 입력받은 후, 존재하는 경우에만 접근해서 값을 출력한다.

🖐🏻직접 해보는 손코딩🖐🏻

#딕셔너리를 선언합니다.
dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origine" : "필리핀"
}

#사용자로부터 입력을 받습니다.
key = input(">접근하고자 하는 키:")

#출력합니다.
if key in dictionary:
    print(dictionary[key])
else:
    print("존재하지 않는 키에 접근하고 있습니다.")

-결과

 

② 두 번째 방법: get() 함수

-get() 함수는 딕셔너리의 키로 값을 추출하는 기능으로, 존재하지 않는 키에 접근할 경우 KeyError를 발생시키지 않고 None을 출력한다.

🖐🏻직접 해보는 손코딩🖐🏻

#딕셔너리를 선언합니다.
dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origine" : "필리핀"
}

#존재하지 않는 키에 접근해 봅니다.
value = dictionary.get("존재하지 않는 키")
print("값:", value)

#None 확인 방법
if value == None: #None과 같은지 확인만 하면 됨
    print("존재하지 않는 키에 접근했습니다.")

-결과

 

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

for 키 변수 in 딕셔너리:
     코드

 

🖐🏻직접 해보는 손코딩🖐🏻

#딕셔너리를 선언합니다.
dictionary = {
    "name" : "7D 건조 망고",
    "type" : "당절임",
    "ingredient" : ["망고", "설탕", "메타중아황산나트륨", "치자황색소"],
    "origine" : "필리핀"
}

#for 반복문을 사용한다.
for key in dictionary:
    #출력합니다.
    print(key, ":", dictionary[key])

-결과

 

 

4-2 chapter 마무리

 

🔎핵심 포인트

-딕셔너리는 키를 기반으로 여러 자료를 저장하는 자료형

-는 딕셔너리 내부에서 값에 접근할 때 사용하는 것

-은 딕셔너리 내부에 있는 각각의 내용을 의미

 

 


04-3. 범위 자료형과 while 반복문
▷핵심 키워드 - 범위 / while 반복문 / break 키워드 / continue 키워드

 

✍🏻for 반복문과 함께 많이 사용되는 자료형은 범위(range)이다. 특정한 횟수만큼 반복해서 돌리고 싶을 때는 for 반복문과 범위를 조합해서 사용한다.

 

✏️범위

-정수로 이루어진 범위를 만들 때는 range() 함수를 사용한다. 범위는 다음과 같이 3가지 방법으로 사용할 수 있다.

 

① 매개변수에 숫자를 한 개 넣는 방법: 0부터 A-1까지의 정수로 범위를 만든다.

range(A)

👉🏻A는 숫자

 

② 매개변수에 숫자를 두 개 넣는 방법: A부터 B-1까지의 정수로 범위를 만든다.

range(A, B)

👉🏻A와 B는 숫자

 

③ 매개변수에 숫자를 세 개 넣는 방법: A부터 B-1까지의 정수로 범위를 만드는데, 앞뒤의 숫자가 C만큼의 차이를 가진다.

range(A, B, C)

👉🏻A, B, C는 숫자

 

📋범위를 만들 때 매개변수 내부에 수식을 사용하는 경우도 많다.

 

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

for 숫자 변수 in 범위:
     코드

 

🖐🏻직접 해보는 손코딩🖐🏻

#for 반복문과 범위를 함께 조합해서 사용합니다.
for i in range(5):
    print(str(i) + "=반복 변수")
print()

for i in range(5, 10):
    print(str(i) + "=반복 변수")
print()

for i in range(0, 10, 3):
    print(str(i) + "=반복 변수")
print()

-결과

👉🏻첫 번째 반복문은 [0,1,2,3,4], 두 번째 반복문은 [5,6,7,8,9], 세 번째 반복문은 [0,3,6,9]로 반복이 일어난다.

 

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

-반복을 적용하다보면 몇 번째 반복인지를 알아야 하는 경우가 있다.

 

🖐🏻직접 해보는 손코딩🖐🏻

#리스트 선언
array = [273, 32, 103, 57, 52]

#리스트에 반복문을 적용
for i in range(len(array)):
    #출력
    print("{}번째 반복: {}".format(i, array[i]))

-결과

 

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

-위 반복문은 반복 변수가 작은 숫자에서 큰 숫자 순서로 올라갔다. 하지만 반복 변수가 큰 숫자에서 작은 숫자로 반복문을 적용해야 하는 경우가 있는데, 이러한 반복문을 역반복문이라고 한다.

 

① 역반복문 첫 번째 방법: range() 함수의 매개변수를 세 개 사용하는 방법

🖐🏻직접 해보는 손코딩1🖐🏻

#역반복문
for i in range(4, 0 - 1, -1):
    print("현재 반복 변수: {}".format(i))

-결과

 

② 역반복문 두 번째 방법: reversed() 함수를 사용하는 방법

🖐🏻직접 해보는 손코딩2🖐🏻

#역반복문
for i in reversed(range(5)):
    print("현재 반복 변수: {}".format(i))

-결과

아후,, 나는 reversed 함수가 더 쓰기 편한듯

👉🏻reversed() 함수를 적용하면 [0,1,2,3,4]라는 형태의 범위가 [4,3,2,1,0]으로 뒤집어진다.

 

✏️중첩 반복문으로 피라미드 만들기

🖐🏻직접 해보는 손코딩1🖐🏻

output = ""

for i in range(1, 10):
    for j in range(0, i):
        output += "*"
    output += "\n"
   
print(output)

-결과

왓더..... 교수님 진도가 너무 빨라요

 

🖐🏻직접 해보는 손코딩2🖐🏻

output = ""

for i in range(1, 15):
    for j in range(14, i, -1):
        output += ''
    for k in range(0, 2 * i - 1):
        output += '*'
    output += '\n'
   
print(output)

-결과

이거 맞나... 진짜 모르겠다..

 

✏️while 반복문

while 불 표현식:
        문장

👉🏻while 반복문은 <불 표현식>이 참인 동안 문장을 계속 반복한다.

 

🖐🏻직접 해보는 손코딩🖐🏻

#while 반복문을 사용한다.
while True:
    #"."을 출력한다
    #기본적으로 end가 "\n"이라 줄바꿈이 일어나는데
    #빈 문자열 ""로 바꿔서 줄바꿈이 일어나지 않게 한다.
    print(".", end="")

-결과

으악

 

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

🖐🏻직접 해보는 손코딩🖐🏻

#반복 변수를 기반으로 반복하기
i = 0
while i < 10:
    print("{}번째 반복입니다.".format(i))
    i += 1

-결과

 

📋while 반복문에서 가장 중요한 키워드는 조건이다. 조건을 활용해서 반복을 사용해야 한다면 while 반복문을 사용하는 것이 좋다.

 

✏️while 반복문: 상태를 기반으로 반복하기

-remove() 함수는 리스트 내부에서 해당하는 값을 하나만 제거할 수 있다. while 반복문을 활용하면 여러 개를 제거할 수 있다. while 반복문의 조건을 '리스트 내부에 요소가 있는 동안'으로 지정한다.

 

🖐🏻직접 해보는 손코딩🖐🏻

#변수를 선언합니다.
list_test = [1, 2, 1, 2]
value = 2

#list_test 내부에 value가 있다면 반복
while value in list_test:
    list_test.remove(value)
   
#출력합니다.
print(list_test)

-결과

👉🏻리스트 내부에 있는 모든 2가 제거될 때까지 반복하기 때문에 2가 모두 제거된 결과가 출력된다.

 

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

-시간을 기반으로 반복할 때에는 유닉스 타임을 이용한다.

📋유닉스 타임: 세계 표준시로 1970년 1월 1일 0시 0분 0초를 기준으로 몇 초가 지났는지 정수로 나타낸 것

 

🖐🏻직접 해보는 손코딩🖐🏻

#시간과 관련된 기능을 가져옵니다.
import time

#변수를 선언합니다.
number = 0

#5초동안 반복합니다.
target_tick = time.time() + 5
while time.time() < target_tick:
    number += 1
   
#출력합니다.
print("5초동안 {}번 반복했습니다.".format(number))

-결과

 

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

-break와 continue 키워드는 반복문 내부에서만 사용할 수 있다.

-break 키워드는 반복문을 벗어날 때 사용하는 키워드 / 일반적으로 무한 반복문을 만들고, 내부의 반복문을 벗어날 때 많이 사용한다.

 

🖐🏻직접 해보는 손코딩1🖐🏻

#변수를 선언합니다.
i = 0

#무한 반복합니다.
while True:
    #몇 번째 반복인지 출력한다.
    print("{}번째 반복문입니다.".format(i))
    i = i + 1
    #반복을 종료합니다.
    input_text = input(">종료하시겠습니다?(y/n):")
    if input_text in ["y", "Y"]:
        print("반복을 종료합니다.")
        break

-결과

 

🖐🏻직접 해보는 손코딩2🖐🏻

-continue 키워드: 현재 반복을 생략하고, 다음 반복으로 넘어갈 때 사용하는 키워드

#변수를 선언합니다.
numbers = [5, 15, 6, 20, 7, 25]

#반복을 돌립니다.
for number in numbers:
    #number가 10보다 작으면 다음 반복으로 넘어갑니다.
    if number < 10:
        continue
    #출력합니다.
    print(number)

-결과

 

 

4-3 chapter 마무리

 

🔎핵심 포인트

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

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

-break 키워드는 반복문을 벗어날 때 사용하는 구문

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

 

 


04-4. 문자열, 리스트, 딕셔너리와 관련된 기본 함수
▷ 핵심 키워드 - reversed() / enumerate() / items() / 리스트 내포

 

✍🏻파이썬만의 고유한 기능들

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

 

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

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

 

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

-리스트에서 요소의 순서를 뒤집고 싶을 때는 reversed() 함수를 사용한다.

 

🖐🏻직접 해보는 손코딩🖐🏻

#리스트를 선언하고 뒤집습니다.
list_a = [1, 2, 3, 4, 5]
list_reversed = reversed(list_a)

#출력합니다.
print("# reversed()함수")
print("reversed([1, 2, 3, 4, 5]):", list_reversed)
print("list(reversed([1, 2, 3, 4, 5])):", list_reversed)
print()

#반복문을 적용해 봅니다.
print("# reversed() 함수와 반복문")
print("for i in reversed([1, 2, 3, 4, 5]):")
for i in reversed(list_a):
    print("-", i)

-결과

 

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

-리스트의 요소를 반복할 때 현재 인덱스가 몇 번째인지 확인해야 하는 경우가 많은데, 파이썬은 이런 코드를 쉽게 작성할 수 있도록 enumerate() 함수를 제공한다.

 

🖐🏻직접 해보는 손코딩🖐🏻

#변수를 선언합니다.
example_list = ["요소A", "요소B", "요소C"]

#그냥 출력합니다.
print("# 단순 출력")
print(example_list)
print()

#enumerate() 함수를 적용해 출력합니다.
print("# enumerate() 함수 적용 출력")
print(enumerate(example_list))
print()

#list() 함수로 강제 변환해 출력합니다.
print("# list() 함수로 강제 변환 출력")
print(list(enumerate(example_list)))
print()

#for 반복문과 enumerate() 함수 조합해서 사용하기
print("# 반복문과 조합하기")
for i, value in enumerate(example_list):
    print("{}번째 요소는 {}입니다.".format(i, value))

-결과

 

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

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

 

🖐🏻직접 해보는 손코딩🖐🏻

#변수를 선언합니다.
example_dictionary = {
    "키A" : "값A",
    "키B" : "값B",
    "키C" : "값C",
}

#딕셔너리의 items() 함수 결과 출력하기
print("# 딕셔너리의 items() 함수")
print("items():", example_dictionary.items())
print()

#for 반복문과 items() 함수 조합해서 사용하기
print("# 딕셔너리의 items() 함수와 반복문 조합하기")

for key, element in example_dictionary.items():
    print("dictionary[{}] = {}".format(key, element))

-결과

 

✏️리스트 내포

🖐🏻직접 해보는 손코딩1🖐🏻

#변수를 선언합니다.
array = []

#반복문을 적용합니다.
for i in range(0, 20, 2):
    array.append(i*i)
#출력합니다.
print(array)

-결과

👆🏻위를 한 줄로 작성할 수 있다. 리스트 안에 for문을 사용하면 된다.

 

🖐🏻직접 해보는 손코딩2🖐🏻

#리스트를 선언합니다.
array = [i * i for i in range(0, 20, 2)]
#출력합니다.
print(array)

-결과 위와 똑같음

 

📋리스트 내포

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

-다음과 같이 if 구문을 넣어 조건을 조합할 수 있다.

리스트 이름 = [ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문 ]

 

🖐🏻직접 해보는 손코딩3🖐🏻

#리스트를 선언합니다.
array = ["사과", "자두", "초콜릿", "바나나", "체리"]
output = [fruit for fruit in array if fruit != "초콜릿"]

#출력합니다.
print(output)

-결과

 

 

4-4 chapter 마무리

 

🔎핵심 마무리

-reversed() 함수는 매개변수에 리스트를 넣으면 요소의 순서를 뒤집을 수 있다

-enumerate() 함수는 매개변수에 리스트를 넣으면 인덱스와 값을 쌍으로 사용해 반복문을 돌릴 수 있게 해주는 함수

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

-리스트 내포는 반복문과 조건문을 대괄호[] 안에 형태를 사용해서 리스트를 생성하는 파이썬의 특수한 구문

 

 

 

'코딩 공부 > 파이썬 (혼공단 11기)' 카테고리의 다른 글

[혼공파] 6주차_07-2 ~ 08  (0) 2024.02.07
[혼공파] 5주차_06 ~ 07-1  (0) 2024.02.01
[혼공파] 4주차_05  (0) 2024.01.24
[혼공파] 2주차_02-3 ~ 03  (0) 2024.01.12
[혼공파] 1주차_01-1 ~ 02-2  (0) 2024.01.03