Python

Python 문법 기초 10 - 반복문 for(continue, break)

코딩탕탕 2022. 10. 22. 15:41

 

# 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 값의 순서를 변경하여 출력하였다.