Language/Python

Python 강의 정리 4. 반복문(for문,while문), 딕셔너리

Jen'_' 2021. 5. 2. 21:50
반응형

 

for문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
for i in "안녕하세요"# 안녕하세요는 문자열 리스트
    print("-", i)
print()
 
numbers = [2671043445689099400]
for i in numbers:
    if i > 100:
        print("100이상의 수: ", i)
print()
------------------------
(result)
- 안
- 녕
- 하
- 세
- 요
 
100이상의 수:  267
100이상의 수:  104
100이상의 수:  890
100이상의 수:  400
cs

 

이중 for문

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
list_d=[[1,2,3], [4,5,6,7], [8,9]]
for i in list_d:   # 이중리스트엔 이중for문을 써야한다
    for j in i:
        print(j)
print()        
 
# for문과 if문
for i in numbers:
    if i % 2 == 0:
        print(i, "는 짝수")
    else:
        print(i, "는 홀수")  
----------------
(result)
1
2
3
4
5
6
7
8
9
 
267 는 홀수
104 는 짝수
3 는 홀수
44 는 짝수
56 는 짝수
890 는 짝수
99 는 홀수
400 는 짝수
cs

 

범위 함수 range()

  1. range(stop)
    • range(10)은 0,1,2,3,4,5,6,7,8,9 를 생성한다
    • stop에서 마지막 숫자 10은 포함되지 않음
  2. range(start, stop)
    • range(1,11)은 1,2,3,4,5,6,7,8,9,10 를 생성한다
  3. range(start, stop, step)
    • range(1,11,2)은 1,3,5,7,9 를 생성한다

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
# range()함수 인자 1개
= range(10)
print(list(a))
print()
 
# for 숫자 변수 in rage()
array=[273,33,290,98,43]
print(array)
for i in range(len(array)):
    print("{}번째 반복:{}".format(i,array[i]))
print()
 
# range()함수 인자 3개
for i in range(4,-1,-1):
    print("현재 반복 변수:{}".format(i))
---------------
(result)
[0123456789]
 
[273332909843]
0번째 반복:273
1번째 반복:33
2번째 반복:290
3번째 반복:98
4번째 반복:43
 
현재 반복 변수:4
현재 반복 변수:3
현재 반복 변수:2
현재 반복 변수:1
현재 반복 변수:0
cs

 


 

딕셔너리(dict)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
dict_b = {
    "name""건조 망고",   # key : value 
    "type""당절임",
    "ingredient": ["망고""설탕""색소"],  # value에 리스트가 올 수 있다
    "origin""필리핀"
}
print("name: ", dict_b["name"])
print("type: ", dict_b["type"])
print("ingredient: ", dict_b["ingredient"])
print("ingredient: ", dict_b["ingredient"][0]) # 망고출력
print("origin: ", dict_b["origin"])
print()
-------------
(result)
name:  건조 망고
type:  당절임
ingredient:  ['망고''설탕''색소']
ingredient:  망고
origin:  필리핀
cs

 

- 딕셔너리 타입은 immutable한 키(key)와 mutable한 값(value)으로 맵핑되어 있는 순서가 없는 집합이다.

 

 

요소추가

  • 딕셔너리명[key] = value

 

1
2
3
4
5
6
7
8
9
dict_b["name"= "럭셔리 건조 망고"   # overwrite
print("name: ", dict_b["name"])
 
dict_b["price"= 10000   # 맨뒤에 추가
print(dict_b)
--------
(result)
name:  럭셔리 건조 망고
{'name''럭셔리 건조 망고''type''당절임''ingredient': ['망고''설탕''색소'], 'origin''필리핀''price'10000}
cs

 

- 요소가 중복되면 overwrite

 

요소 삭제

  • del 딕셔너리명[key]
  • 모두 지우기는 clear()
1
2
3
4
5
del dict_b["origin"]  
print(dict_b)
-----------
(result)
{'name''럭셔리 건조 망고''type''당절임''ingredient': ['망고''설탕''색소'], 'price'10000}
cs

 

 

해당 key가 딕셔너리 안에 있는지 조사하기: in 키워드

- 딕셔너리 안에 존재하면 True를 반환하고, 없으면 False를 반환

 

if "name" in dict_b:
    print(dict_b["name"])
else:
    print("키가 존재하지 않습니다")    
print()

# in 키워드
print("name" in dict_b)
print("type" in dict_b)
print("jen" in dict_b)
-------
(result)
럭셔리 건조 망고

True
True
False

 

key로 value 얻기: get() 함수

# key에 대한 value를 반환
value = dict_b.get("name")
print("값: ", value)

# 존재 하지 않는 키를 입력하면 None 반환
value = dict_b.get("jjjjjj")
print("값: ", value)
------
(result)
값:  럭셔리 건조 망고
값:  None

 

key, value 쌍 얻기: items() 메서드

- 키와 값을 조합하여 쉽게 반복문 작성 할 수 있음

 

dict_a={
    "키a":"값a",
    "키b":"값b",
    "키c":"값c"
}

print("딕셔너리의 items()함수")
dict_a.items()
print(dict_a)
print()

print("items()함수와 반복문")
for key, element in dict_a.items():
    print("dict_a[{}] = {}".format(key,element))
-----------
(result)
딕셔너리의 items()함수
{'키a': '값a', '키b': '값b', '키c': '값c'}

items()함수와 반복문
dict_a[키a] = 값a
dict_a[키b] = 값b
dict_a[키c] = 값c

 

for문과 딕셔너리

# for 키 변수 in 딕셔너리
for key in dict_b: 
    print(key,":",dict_b[key])
print()

# 예제: 리스트 요소가 딕셔너리인 경우이다, 요소를 출력하되 10살처럼, 숫자와 살을 붙여 출력하라
pets = [
    {"name": "해피", "age":"10"},
    {"name": "나비", "age":"2"},
    {"name": "구름", "age":"6"},
    {"name": "보미", "age":"1"},
]
print("*우리동네 애완 동물*")
for i in pets:
    print(i["name"],"{}{}".format(i["age"],"살"))
---------------
(result)
name : 럭셔리 건조 망고
type : 당절임
ingredient : ['망고', '설탕', '색소']
price : 10000

*우리동네 애완 동물*
해피 10살
나비 2살
구름 6살
보미 1살
# 예제: 아래 딕셔너리를 key:value 형식으로 한줄씩 출력하시오
character = {
    "name":"기사",
    "level":12,
    "items":{
        "sword":"불꽃의 검",
        "amor":"불꽃 블레이드"
    },
    "skill":["베기","찌르기","난도질"]
}

for key in character:
    if type(character[key]) is dict:  # vlaue 타입이 딕셔너리인 경우
        for small_key in character[key]:
            print(small_key,":",character[key][small_key])
    elif type(character[key]) is list:  # value 타입이 리스트인 경우
        for item in character[key]:
            print(key,":",item)
    else:   # value
        print(key,":",character[key]) 
------------
(result)
name : 기사
level : 12
sword : 불꽃의 검
amor : 불꽃 블레이드
skill : 베기
skill : 찌르기
skill : 난도질

 

 

 

자료형들의 차이점

 

리스트와 딕셔너리의 차이점

리스트 인덱스를 기반으로 값을 저장 리스트명 = [] 리스트명[index]
딕셔너리 키를 기반으로 값을 저장 딕셔너리명 = {} 딕셔너리명[key]

while 문

# while 반복문(유닉스타임 사용)
import time
num=0
target_tick = time.time()+5
while time.time() < target_tick:
    num +=1
print("5초 동안 {}번 반복했습니다".format(num)) # 5초동안 반복문 num번 돌림   

# 예제: 1+2+3+4+5+6+.... 을 반복하여 10000을 넘기는 값을 구하시오 
limit = 10000
i = 1
sum = 0
while sum < limit:
    sum += i
    i += 1

print("{}를 더할 때 {}을 넘으며 그때의 값은 {}입니다".format(i, limit, sum))    
-------------
(result)
5초 동안 36463689번 반복했습니다
142를 더할 때 10000을 넘으며 그때의 값은 10011입니다
반응형