시작은 미약하였으나 , 그 끝은 창대하리라

04강) 반복문 본문

프로그래밍/파이썬

04강) 반복문

애플파ol 2022. 1. 13. 15:05

목차: 

       04_1) 리스트와 반복문

       04_2) 딕셔너리와 반복문

       04_3) 반복문과 while 반복문

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

 

 

 

04_1) 리스트와 반복문

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

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

           - 리스트에 요소 추가, 제거하기

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

           - for 반복문

 

 

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

        리스트(list) : 여러가지 자료들을 저장할 수 있는 자료.

                         주의) 1) 대괄호[]로 선언해주고

                                 2) 대괄호 안에 문자열은 " " 써서 작성, 숫자및 불 은 바로 작성함

                                 3) 리스트의 순서를 문자열 때 처럼 1이아니라 0부터 카운트한다

        요소          : 대괄호 내부에 넣는 자료 (문자, 숫자, 불 모두 지칭)

        인덱스       : 대괄호 안에 들어간 숫자 (숫자만 지칭)

                    

list_a=list()        # list()를 사용해서 리스트를 만듬, 그러나 비어있는 리스트를 의미함.
                     # 공부하다 보면 () 안에 변수들이 들어감으로 변수들이 할당받은 값을 
                     # 리스트(list)형식으로 만들어줌.
                     
                     

array=[273, 12, "문자열", True, 55 ]
print(array)

[273, 12, '문자열', True ]

print(array[0])
273

print(array[1:3])
[12,'문자열']

print(array[-1])                  #대괄호 안에 음수를 넣어 뒤에서부터 요소를 선택할수 있음
55

print(array[5])
오류발생

print(array[2])
문자열
print(array[2][1])                          #리스트 접근 연산자를 이중으로 사용가능
자

new_array=[[1,2,3],[4,5,6],[7,8,9]]          #리스트 안에 리스트를 사용할 수 있음
print(new_array[1])
[4,5,6]
print(new_array[1][1])
5

change_array=[44,"변경","문자열",14]           # 리스트의 특정 요소 변경 가능
change_array[1]=90                             # 90양옆에 "" 없기때문에 정수로 인식
print(change_array)                            # ("90"이면 90을 문자열로 인식)
[44, '90', '문자열', 14]

 

 

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

       연결(+) : 말 그대로 두개의 리스트를 붙여줌

       반복(*)  : 말 그대로 리스트를 n번 반복해줌

        len()    : 괄호 내부에 리스트 변수를 넣으면 요소의 개수를 세어 줌

                  : 괄호 내부에 문자열을 넣으면 문자열의 글자 수(=길이)세어 줌

                    주의) 숫자로 입력받은 int, float 형식에서는 str로 자료형 변환 해주어야 함

list_A=[1,2,3]
list_B=[4,5,6]

print(list_A+list_B)
[1, 2, 3, 4, 5, 6]

print(list_A*3)
[1, 2, 3, 1, 2, 3, 1, 2, 3]

print(len(list_A))
3

number=1454
print(len(number))
오류 발생

number=1454
print(len(str(number)))                 # str을 사용하여 형 변환을 하거나.
4

number="1454"                           # 애초부터 문자열로 입력을 해버린다
print(len(number))
4

  ▶리스트에 요소 추가, 제거하기

      추가하는 방법 : 1) apped()  함수     : 리스트 뒤쪽에 요소를 추가

                           2) insert()  함수     : 리스트의 중간에 요소 추가

                           3) extend() 함수     : 한 번에 여러요소를 추가하고 싶을 때

                                                      (원래 리스트 뒤에 새로운 리스트의 요소를 추가 해줌) 

                           주의) 위 3가지 방식 모두 기존의 변수의 값이 파괴되고 새로운 값으로 

                                   재설정 되는 '파괴적' 인 함수임. 

list_A=[1,2,3]
list_B=[4,5,6]

list_A.append(6)               # list_A의 맨뒤에 6을 추가함
print(list_A)
[1, 2, 3, 6]

list_B.insert(1,9)             # list_B의 1번 위치에 9를 삽입함
print(list_B)                  
[4, 9, 5, 6]                   # 나머지 요소들은 뒤로 밀려남

list_B.extend([1,"a",9])       # 기존의 list_B에서 새로운 리스트의 요소가 추가가 됨
print(list_B)
[4, 5, 6, 1, 'a', 9]

     

   제거하는 방법 : 1) 인덱스로 제거하기

                            - syntax) del 리스트명[인덱스]

                                  : 리스트의 특정 인덱스에 있는 요소를 제거함.

                            - syntax) 리스트명.pop(인덱스)

                                  : del과 같은데, 매개변수를 입력하지 않으면 마지막 요소를 제거함.

                        2) 값으로 제거하기

                            - syntax) 리스트명.remove(값)

                                   : 말 그래도 값을 지정해서 제거함

                              주의) remove(값)을 한다고 리스트 안에 있는 해당하는 모든 값이 사라지는 것이 아니라

                                     앞쪽에 하나만 제거가 된다 (만약 여러개의 값을 제거하려면 반복문 사용) 

                            - syntax)  리스트명.clear()

                                   : 리스트 내부의 요소를 모두 제거 함

#---------------인덱스로 제거하기-------------#

list_a=[7,2,5,4,9,6]
list_b=[7,2,5,4,9,6]
list_c=[7,2,5,4,9,6]
list_d=[7,2,5,4,9,6,1,5,2]

del list_a[3]
print(list_a)
[7, 2, 5, 9, 6]

list_b.pop(2)
print(list_b)
[7, 2, 4, 9, 6]

list_c.pop()
print(list_c)
[7, 2, 5, 4, 9]

del list_d[1:3]                           # 앞에서 했던 문자열과 동일함
print(list_d)
[7, 4, 9, 6, 1, 5, 2]

#--------------값으로 제거하기----------------#

list_f=[1,2,1,2]
list_f.remove(2)
print(list_f)
[1,1,2]

list_g=[1,5,6,2,7,8]
list_g.clear()
print(list_g)
[]

    

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

                 syntax) 값 in 리스트명

                     -> in 연산자 : 특정 값이 리스트 내부에 있는지 확인 하는 방법

 

                 syntax) 값 not in 리스트명

                     -> not in 연산자 : in 연산자와 반대로 동작 함

list_a=[912, 485, 14, 61, 224]
912 in list_a
True

100 in list_a
False

912 not in list_a
False

100 in list_a
True

 

  ▶for 반복문

              syntax)  for 반복자 in 반복할 수 있는 것:

                         ()()()()코드                            

 

              반복할 수 있는 것 = 문자열, 리스트, 딕셔너리, 범위(range) 등

for i in range(5):                         # 범위(range) 사용, 5번 반복 하겠다.
	print("출력")
출력
출력
출력
출력
출력



array=[1,2,3,4,5,6]                        # 리스트 사용, 반복자 i
for i in array:                            # 반복할 수 있는것(array의 요소)이 끝날때까지 반복함
	print(i)   
1
2
3
4
5


for char in "안녕하세요":                   # 반복문을 문자열에도 사용할수 있음
	print(char)    
안
녕
하
세
요

 

 04_2) 딕셔너리와 반복문

          -딕셔너리 선언 및 요소에 접근하기

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

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

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

 

  ▶딕셔너리 선언 및 요소에 접근하기

           -> 리스트(list) 가 '인덱스 기반으로 값을 저장하는 것' 이면

               딕셔너리(dictionary)는 '키를 기반으로 값을 저장하는 것'

 syntax)  변수={      

                 키 : 값,

                 키 : 값,

                 . . .     

                 키 : 값

              }           

         -> 키 : 딕셔너리 내부에서 값에 접근할 때 사용하는 것으로

                   문자열, 숫자, 불 등으로 선언 가능 ( 주로 문자열로 선언함 )

                  주의) 키를 문자열로 사욜할경우 따옴표 필수!

         -> 값 : 딕셔너리 내부에 있는 각각의 내용을 의미

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

     

          -> 딕셔너리 요소에 접근할때 : 딕셔너리 뒤에 대괄호[]를 입력하고 내부에 인덱스처럼 키를 입력함

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

dict_a={
    "ADD" : "Seoul",                         # 키를 문자열로 선언
    "BDD" : "Japan",
    "CDD" : "China",
    "Army" : ["ROKMC","ROK","AirForce"],      # 값으로 리스트 사용 가능
    1   : 30,                                 # 키를 숫자로 선언
    True: 50                                  # 키를 불로 선언    
}

print(dict_a["ADD"])
Seoul


#---------딕셔너리 요소에 접근-----------#

print(dict_a["Army"])
['ROKMC','ROK','AirForce']



#-------------값을 변경함----------------#

dict_a["ADD"]= "KOREA"
print(dict_a["ADD"])
Korea

       

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

       - 추가하기 : 마지막 위치에 추가가 됨

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

       -제거하기 : 

                syntax) del 딕셔너리[제거할 키]

#-------------- 값 추가-------------#

dict_a={
    "ADD" : "korea",   
    "BDD" : "Japan",
    "CDD" : "China"        
}
dict_a["DDD"]= "USA"
print(dict_a)
{'ADD': 'korea', 'BDD': 'Japan', 'CDD': 'China', 'DDD': 'USA'}



#-------------- 값 제거--------------#

del dict_a["CDD"]
print(dict_a)
{'ADD': 'korea', 'BDD': 'Japan', 'DDD': 'USA'}


#--------------빈 딕셔너리에 요소 추가-----------#

key_list=["name","hp","mp","level"]
value_list=["기사",500,200,5]
character={}
for A in key_list:
    for B in value_list:
        character[A]=B               # character 라는 딕셔너리에 [a라는 키와] = B 라는 값 추가
print(character)
{'name': 5, 'hp': 5, 'mp': 5, 'level': 5}

 

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

      - in키워드   :  리스트 내부에 값이 있는지 없는지 확인한것과 같이 딕셔너리에도 동일하게 사용 됨

if key in dict_a:                             # in 키워드 사용
	print(dict_a[key])
else:
	print("존재하지 않는 키입니다)

 

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

           for 문 syntax)     for 반복자 in 반복할 수 있는 것:             

                                  ()()()()코드       

 

             syntax)           for 키 변수 in 딕셔너리:                   

                                  ()()()()코드                  

                       주의) 딕셔너리 내부에 있는 키가 변수에 들어감(키 변수에 딕셔너리의 키를 쓰라는것이 아님)

                        Tip) 그냥 동일한 것이다. // 반복자 (=변수) =키 변수 ,

                                                            반복할수 있는 것에 딕셔너리 들어감

dict_a={
    "ADD" : "korea",   
    "BDD" : "Japan",
    "CDD" : "China"        
}
for goal in dict_a:
    print(goal,"나라이름",dict_a[goal])
    
    
ADD 나라이름 korea
BDD 나라이름 Japan
CDD 나라이름 China

 

 

04_3) 반복문과 while 반복문

            -범위(range)

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

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

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

            -while 반복문

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

 

 

  ▶범위(range)

             -> 정수의 범위를 나타내는 값

             - 리스트, 딕셔너리 외에 for반복문과 함께 많이 사용되는 범위 자료형임

              주의) range() 함수의 매개변수는 반드시 정수만 들어갈수 있음( 정수나누기 연산자(//) 사용 ),

                      파이썬에서 range안에 값들은 int(정수)라고 받아 들였다는 의미이기도 함

 

             - 매개변수가 한개인 경우 

                  -> range(A)  : 0부터 A-1 까지의 정수로 범위를 만듬

a=range(5)
print(list(a))

[0, 1, 2, 3, 4]

 

             - 매개변수가 두개인 경우

                  -> range(A,B) : A부터 B-1 까지의 정수로 범위를 만듬

a=range(5,10)
print(list(a))

[5, 6, 7, 8, 9]

 

             - 매개변수가 세개인 경우 

                  -> range(A,B,C) : A부터 B-1까지의 정수로 범위를 만드는데, 간격이 C만큼임

a=range(5,15,2)
print(list(a))

[5, 7, 9, 11, 13]

 

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

          for 문 syntax)                       for 반복자 in 반복할 수 있는 것:               

                                                   ()()()()코드                                     

          for 문 syntax with range)       for 숫자변수 in 범위: 

                                                  ()()()()코드              

                                                  Tip) 그냥 동일한것이다. //반복자(=변수) =숫자변수 ,

                                                                                    반복할 수 있는것에 범위가 들어감

 

for i in range(0,10,3):
    print(i)
    
0
3
6
9

 

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

                             Tip) for문 syntax와 동일하다.

array_a=[44,21,56,78,24,89]

for i in array_a:
    print(i)
    
44
21
56
78
24
89   
       
    
    
    
for k in range(len(array_a)):                # len 요소의 개수-> range로 범위 잡아줌
    print(k)

0
1
2
3
4
5

 

 

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

                    -range() 함수의 매개변수를 거꾸로 사용

                    -reversed() 함수 사용

for i in range(5,0-1,-1):          #5부터 0까지 출력된다는것중
    print(i) 	                  # 0까지라는 것을 강조하고싶어서 0-1 이라 표현함.
5
4
3
2
1
0


for i in reversed(range(4)):      # 0 ,1 ,2, 3 을 출력하고 이것을 뒤집어서 3,2,1,0 이 됨
	print(i)
3
2
1
0

  ▶while 반복문

             syntax) while 불 표현식: 

                       ()()()()문장         

 

             -> 불 표현식이 참인 동안 계속 while 반복문이 돌아가게 됨. (불 표현식= 참 거짓을 표현하는 식) 

                 거짓이 되는순간 while문 끝남.

 

             Tip) for 문 VS while문 

-------------------------2개의 반복문--------------------------- -----------------------------차이---------------------------------
for문 특정 횟수만큼 반복하는 경우 (즉, 리스트, 딕셔너리 등 내부의 요소를 순회하는 경우)
while문 불 표현식이 참인 동안 계속 반복함 (조건 활용)
i=0
while i<10:
    print(i)
    i+=1         # i=i+1
0
1
2
3
4
5
6
7
8
9

              ->무한 반복문 

                  syntax) while True: 

                           ()()()()문장   

 

                  Tip) 사용하는 경우 : 내부의 코드를 돌고나서 큰틀의 프로그램이 자동으로 다시 돌아야 하는경우.

 

 

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

                        주의)  반복문 내부에서만 사용할수 있는 break, continue 키워드

 

         -> break 키워드 : 사용시 while문을 깨버리고 탈줄함 ( 어떤 while 문을 깨는지 명확히 숙지 )

 

                        Tip) 일반적인 사용은 무한 반복문을 만들고, 내부의 반복을 벗어날때 많이 사용함

while True:
    i=int(input("1,2,3중에 숫자를 입력하세요."))
    while i==1:
        print("입력받은 숫자는 1입니다.")
        break                                  # break 는 while i==1: 을 깬 후 while True: 로 감
    while i==2:
        print("입력 받은 숫자는 2입니다.")
        break                                  # break 는 while i==2: 을 깬 후 while True: 로 감
    if i==3:
        print("프로그램을 종료 합니다")
        break                                 # break 는 while True: 을 깬 후 프로그램 종료시킴

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

 

num=[1,5,4,9,2,7,8,4,9]
for a in num:
    if a<5:
        continue                    # 1 이 들어오지만 countine 때문에 print(1)을 하지못하고 
    print(a)                        # 다시 for문으로 올라가서 5가 들어감
    
5
9
7
8
9

 

 

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

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

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

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

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

           -리스트 내포

 

 

 

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

-------------------------------함수------------------------------- -------------------------------설명-------------------------------
min() 리스트 내부에서 최솟값을 찾음
max() 리스트 내부에서 최댓값을 찾음
sum() 리스트 내부에서 값을 모두 더함
numbers=[124,156,325,789,234,567]
a=min(numbers)
print(a)
124

b=sum(numbers)
print(b)
2195

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

     

list_a=[1,2,3,4,5]
list_reversed=reversed(list_a)

print(list_reversed)                                  # 이터레이터임 으로 주소값이 출력됨
<list_reverseiterator object at 0x00000224D3AED300>

print(list(list_reversed))
[5, 4, 3, 2, 1]

 

 

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

               ->리스트의 요소를 반복할 때 현재 인덱스가 몇번인지 확인해야 할때 유용함

list_a=["요소1","요소2","요소3"]


print(list(enumerate(list_a)))
[(0, '요소1'), (1, '요소2'), (2, '요소3')]


for i,value in enumerate(list_a):       #enumerate() 함수를 쓰면 반복 변수를  왼쪽과 같은 형태로 저장가능
    print("{},{}".format(i,value))
0,요소1
1,요소2
2,요소3

 

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

        주의) 딕셔너리에서 사용하는 함수다.

       

dictionary_a={
    "key_a": "value_a",
    "key_b": "value_b",
    "key_c": "value_c",
}

print(dictionary_a.items())

dict_items([('key_a', 'value_a'), ('key_b', 'value_b'), ('key_c', 'value_c')])    # 출력 결과




for key, value_A in dictionary_a.items():
    print("{},{}".format(key, value_A))
    
key_a,value_a                                       # 출력 결과
key_b,value_b
key_c,value_c

 

  ▶리스트 내포

 -> 리스트 내부에 표현식을 내포 하는것임

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

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

       Tip) 반복자= 변수

             표현식= 리스트에 저장하고 싶을때 어떻게(어떤 표현으로)해서 저장할 것 인가

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

array =[i*i for i in range(0,20,2)]
print(array)

[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]



#--------위와 같은 식을 알지 못한다면 아래와 같이 해야한다------------#



array=[]                      # 빈 리스트 선언
for i in range(0,20,2):
    array.append(i*i)
print(array)

[0, 4, 16, 36, 64, 100, 144, 196, 256, 324]
#  syntax)   리스트 이름[ 표현식 for 반복자 in 반복할 수 있는 것 if 조건문] 

array=["사과","배","바나나","귤","사탕"]
output=[i for i in array if i !="사탕"]        
print(output)

['사과', '배', '바나나', '귤']



# line4 설명 
# array에서 i(반복자)를 돌리면서 사탕이 아닐때 i(표현식)라는 요소를 저장함과 동시에 output(리스트)
# 가 만들어 진다

'프로그래밍 > 파이썬' 카테고리의 다른 글

06강 ) 예외 처리  (0) 2022.01.25
05강) 함수  (0) 2022.01.21
파이썬) 라이브러리 업뎃중  (0) 2022.01.17
03강) 조건문  (0) 2022.01.12
02강) 자료형  (0) 2022.01.11
Comments