Python 문법 기초 10 - 반복문 for(continue, break)
# for i in [1,2,3,4,5]: # list
# for i in (1,2,3,4,5): # tuple
for i in {1,2,3,4,5}: # set 순서는 없지만 for문 사용시 순서대로 나온다.
print(i, end = ' ') # 한 줄로 출력하려면 end 사용
<console>
1 2 3 4 5
for 변수명 in 식으로 나열한다. 한개씩 빠져나오면서 출력된다.
어떠한 타입도 가능하다.
soft = {'java':'웹용언어', 'python':'만능언어', 'MariaDB':'데이터처리'}
print(soft.items()) # dict_items([('java', '웹용언어'), ('python', '만능언어'), ('MariaDB', '데이터처리')]) 리스트안의 튜플로 적용된다.
for i in soft.items():
# print(i)
print(i[0]+ ' ^^; ' + i[1])
<console>
dict_items([('java', '웹용언어'), ('python', '만능언어'), ('MariaDB', '데이터처리')])
java ^^; 웹용언어
python ^^; 만능언어
MariaDB ^^; 데이터처리
갯수에 상관없이 [0] [1] 순으로 배치되어있으며 모든 key, value 가 나온다.
for k in soft.keys():
print(k, end = ' ')
print()
for k in soft.values():
print(k, end = ' ')
<console>
java python MariaDB
웹용언어 만능언어 데이터처리
key, valeu 만 따로 뽑아서 출력할 수도 있다.
li = ['a', 'b', 'c']
for idx, data in enumerate(li): # for 문 돌리면서 인덱싱을 하고 싶을 때 사용
print(idx, data)
<console>
0 a
1 b
2 c
list 타입의 for 문 적용(indexing 사용)
for 문으로 구구단 만들기
for n in [2, 3]:
print('---{}단---'.format(n))
for i in [1,2,3,4,5,6,7,8,9]:
print('{}*{}={}'.format(n, i, n * i), end = ' ')
print()
<console>
---2단---
2*1=2 2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
---3단---
3*1=3 3*2=6 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
datas = [1,2,3,4,5]
for i in datas:
if i == 3: continue
if i == 4: break
print(i, end = ' ')
else: # else 는 필수가 아닌 옵션이다. 써도 되고 안 써도 그만
print('정상 종료일 때 수행')
<console>
1 2
for 문에서의 continue 와 break 사용 예제
jumsu = [95, 70, 60, 50, 100]
number = 0
for jum in jumsu:
number += 1
if jum <70: continue
print('%d번째 수험생은 합격'%number)
<console>
1번째 수험생은 합격
2번째 수험생은 합격
5번째 수험생은 합격
70점 미만의 학생들은 넘기고 이상의 학생들만 출력하고 싶을 때 사용!
continue로 70점을 넘기지 못한 학생들의 점수는 pass 하고 있다.
li1 = [3,4,5]
li2 = [0.5,1,2]
result = []
for a in li1:
for b in li2:
# print(a + b, end = ' ')
result.append(a + b)
print(result)
datas = [a + b for a in li1 for b in li2]
print(datas)
<console>
[3.5, 4, 5, 4.5, 5, 6, 5.5, 6, 7]
[3.5, 4, 5, 4.5, 5, 6, 5.5, 6, 7]
li1 의 숫자들을 li2와 더한 값을 구해 list 타입으로 출력하기
list 타입은 순서가 있기 때문에 순서대로 더하여 나온 값들을 나열한 것이다.
for test_str in ['111-1234','일이삼-사오육칠','2222-1234']:
if re.match(r'^\d{3,4}-\d{4}$', test_str): # ^가 대괄호 안에 없으면 시작 부분
print(test_str, '전화번호 맞아요')
else:
print(test_str, '음...')
<console>
111-1234 전화번호 맞아요
일이삼-사오육칠 음...
2222-1234 전화번호 맞아요
if 문과 for 문, 정규식 표현을 사용해서 전화번호가 맞는지에 대한 유무를 확인 가능
print(sum([1,2,3])) # 집합형 자료의 합을 구하는 내장형 함수이다.
print('사전형 자료로 과일값 출력')
price = {'사과':2000, '감':500, '배':1000}
guest = {'사과':2, '감':3}
bill = sum(price[f] * guest[f] for f in guest)
print('고객이 구해한 과일 총액 : {}원'.format(bill))
<console>
6
사전형 자료로 과일값 출력
고객이 구해한 과일 총액 : 5500원
sum 함수를 통해 값들을 다 더할 수 있다.
price 와 guest가 dict 타입이기 때문에 for문을 사용했다. 둘의 key값을 맞춰줘야되기 때문이다.
price[f] * guest[f] [] 안에 f를 넣은 이유는 guest 값과 대칭되는 값들만을 곱하기 위해서이다.
temp = [1,2,3]
for i in temp:
print(i, end = ' ')
print([i for i in temp])
print({i for i in temp})
temp2 = list()
for i in temp:
temp2.append(i + 10)
print(temp2)
temp2 = [i + 10 for i in temp]
print(temp2)
<console>
1 2 3
[1, 2, 3]
{1, 2, 3}
[11, 12, 13]
[11, 12, 13]
for 문으로 출력하고 그것을 list 타입, set 타입으로 출력한 코드이다.
함수를 호출해서 list 타입으로 변경도 가능하다.
람다함수로도 출력해 보았다.
datas = [1,2,'a',True, 3]
li = [i * i for i in datas if type(i) == int] # for문을 통해서 타입이 int인 경우에만 출력
print(li)
print()
datas = {1,1,2,2,2,3} # 중복 제거해준다. set 타입
se = {i * i for i in datas} # {} 대신에 [] 로 깜싸면 list 타입으로 나온다.
print(se)
<console>
[1, 4, 9]
{1, 4, 9}
람다함수로 for문과 if문을 사용하여 출력하였다.
{}를 사용하여 set 타입으로 출력하였다.
id_name = {1:'tom', 2:'james'}
name_id = {value:key for key, value in id_name.items()}
print(name_id)
<console>
{'tom': 1, 'james': 2}
key 값과 valeu 값의 순서를 변경하여 출력하였다.