Language/Python
sw교육_python 5일차
송 이
2023. 9. 14. 17:31
반복구문¶
- for ~ in collection(열거형(__iter)) :
- for ~ else
- while ~
- break, continue
In [6]:
for value in range(10) :
print(value, end = '\t')
print()
for value in range(1,10) :
print(value, end = '\t')
print()
for value in range(1,10, 2) :
print(value, end = '\t')
0 1 2 3 4 5 6 7 8 9 1 2 3 4 5 6 7 8 9 1 3 5 7 9
In [68]:
scores = []
sumTmp = 0
meanTmp = 0
for idx in range(10) :
score = int(input('성적을 입력하세요 : '))
scores.append(score)
sumTmp += score #누적할당하는 연산자 : sumTmp = sumTmp + score
print('총합 : ', sumTmp)
print('총합 : ', sum(scores))
print('평균 : ', sumTmp/len(scores))
성적을 입력하세요 : 10 성적을 입력하세요 : 20 성적을 입력하세요 : 30 성적을 입력하세요 : 40 성적을 입력하세요 : 50 성적을 입력하세요 : 60 성적을 입력하세요 : 40 성적을 입력하세요 : 30 성적을 입력하세요 : 20 성적을 입력하세요 : 10 총합 : 310 총합 : 310 평균 : 31.0
In [57]:
msg = 'see u next time'
#print(dir(msg))
for char in msg :
print(char , end='')
for idx in range(len(msg)) :
print(msg[idx], end = '')
see u next timesee u next time
In [60]:
tupleTmp = (46,2,4,2,6,7,239,29,93)
print(dir(tupleTmp))
print()
for idx, data in enumerate(tupleTmp) : #enumerate() 함수는 기본적으로 인덱스와 원소로 이루어진 튜플(tuple)을 만들어줍니다.
print(idx, data, end= '\n')
['__add__', '__class__', '__class_getitem__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index'] 0 46 1 2 2 4 3 2 4 6 5 7 6 239 7 29 8 93
In [18]:
print('리스트에 정의된 요소를 카운트 하고싶다면?')
print('{1:4, ~~}')
lstTmp = [1,2,3,5,1,3,2,5,4,3,5,2]
freq = {}
for data in lstTmp :
if data in freq :
freq[data] += 1
else :
freq[data] = 1
print(freq)
리스트에 정의된 요소를 카운트 하고싶다면? {1:4, ~~} {1: 2, 2: 3, 3: 3, 5: 3, 4: 1}
In [20]:
print('guess game -')
print('1 ~ 100 사이의 난수를 생성하고 숫자를 맞춰보는 게임')
from random import randint
answer = randint (1,100)
print('answer - ', answer)
guess game - 1 ~ 100 사이의 난수를 생성하고 숫자를 맞춰보는 게임 answer - 80
In [ ]:
guess = int(input('1부터 100 사이의 숫자를 입력하세요 : '))
if guess == answer :
print('정답입니다')
elif guess > answer :
print('down')
else :
print('up')
돌발퀴즈
- 반복구문을 이용해서 횟수 10번으로 제한하고 정답을 맞췄을 경우 시도한 횟수와 정답을 출력하는 구문
In [3]:
from random import randint
answer = randint (1,100)
tries = 1
for idx in range(10) :
guess = int(input('1부터 100 사이의 숫자를 입력하세요 : '))
if guess == answer :
print('정답입니다')
break
elif guess > answer :
print('down')
else :
print('up')
tries += 1
print('정답 {}, 횟수 {}'.format(answer, tries))
1부터 100 사이의 숫자를 입력하세요 : 96 down 1부터 100 사이의 숫자를 입력하세요 : 4 up 1부터 100 사이의 숫자를 입력하세요 : 60 down 1부터 100 사이의 숫자를 입력하세요 : 40 up 1부터 100 사이의 숫자를 입력하세요 : 50 down 1부터 100 사이의 숫자를 입력하세요 : 44 up 1부터 100 사이의 숫자를 입력하세요 : 47 down 1부터 100 사이의 숫자를 입력하세요 : 46 down 1부터 100 사이의 숫자를 입력하세요 : 45 정답입니다 정답 45, 횟수 9
돌발퀴즈
- 4년에 한번씩 열리는 아시안게임이 있다
- 향후 50년동안 열리게 되는 아시안게임의 년도를 출력
- 한 줄에 연도 5개를 출력하라
- escape sequence : \n, \t
In [40]:
cnt = 0
for year in range(2023,2074, 4) :
cnt += 1
if cnt%5 == 0 :
print(year, end ='\n')
else :
print(year, end ='\t')
print()
print('1~50 사이의 숫자 중 3의 배수만 한 줄에 5개씩 출력 - ')
cnt1 = 0
for i in range(3,51,3) :
cnt1 += 1
if cnt1%5 == 0 :
print(i, end ='\n')
else :
print(i, end ='\t')
print()
print()
#other case
cnt2 = 0
for year in range(1,51) :
if year%3 == 0 :
cnt2 += 1
if cnt2%5 == 0 :
print(year, end='\n')
else :
print(year, end='\t')
2023 2027 2031 2035 2039 2043 2047 2051 2055 2059 2063 2067 2071 1~50 사이의 숫자 중 3의 배수만 한 줄에 5개씩 출력 - 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48
In [32]:
print('구구단 - ')
dan = int(input('단을 입력하세요 : '))
for gu in range(1,10) :
print('{} * {} = {}'.format(dan,gu, (dan*gu)))
구구단 - 단을 입력하세요 : 4 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36
In [47]:
print('구구단 - ')
for row in range(2,10) :
print('>>>>>> row', row)
for col in range(1,10) :
print('{} * {} = {}'.format(row,col, (row*col)), end = '\t')
print()
#행열 바꾸기
for row in range(1,10) :
for col in range(2,10) :
print('{} * {} = {}'.format(col,row, (row*col)), end = '\t')
print()
구구단 - >>>>>> row 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 >>>>>> row 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 >>>>>> row 4 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 >>>>>> row 5 5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25 5 * 6 = 30 5 * 7 = 35 5 * 8 = 40 5 * 9 = 45 >>>>>> row 6 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 >>>>>> row 7 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63 >>>>>> row 8 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 8 * 9 = 72 >>>>>> row 9 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81 2 * 1 = 2 3 * 1 = 3 4 * 1 = 4 5 * 1 = 5 6 * 1 = 6 7 * 1 = 7 8 * 1 = 8 9 * 1 = 9 2 * 2 = 4 3 * 2 = 6 4 * 2 = 8 5 * 2 = 10 6 * 2 = 12 7 * 2 = 14 8 * 2 = 16 9 * 2 = 18 2 * 3 = 6 3 * 3 = 9 4 * 3 = 12 5 * 3 = 15 6 * 3 = 18 7 * 3 = 21 8 * 3 = 24 9 * 3 = 27 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16 5 * 4 = 20 6 * 4 = 24 7 * 4 = 28 8 * 4 = 32 9 * 4 = 36 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25 6 * 5 = 30 7 * 5 = 35 8 * 5 = 40 9 * 5 = 45 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36 7 * 6 = 42 8 * 6 = 48 9 * 6 = 54 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49 8 * 7 = 56 9 * 7 = 63 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64 9 * 8 = 72 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
In [49]:
print('구구단 - ')
for row in range(2,10) :
if row == 5:
continue
print('>>>>>> row', row)
for col in range(1,10) :
print('{} * {} = {}'.format(row,col, (row*col)), end = '\t')
print()
# if row ==3 :
# break
구구단 - >>>>>> row 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 >>>>>> row 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 >>>>>> row 4 4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16 4 * 5 = 20 4 * 6 = 24 4 * 7 = 28 4 * 8 = 32 4 * 9 = 36 >>>>>> row 6 6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36 6 * 7 = 42 6 * 8 = 48 6 * 9 = 54 >>>>>> row 7 7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49 7 * 8 = 56 7 * 9 = 63 >>>>>> row 8 8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64 8 * 9 = 72 >>>>>> row 9 9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
In [56]:
print('for ~ else')
numbers = [4,24,5,949,54,562,4945,391,4,2,7,45]
find = 562
for data in numbers :
if data == find :
print('find')
break #for문 자체를 빠져나가기 때문에 else를 수행하지 않음
else :
print('Not found')
for ~ else find
- while, while ~ else
- 반복횟수를 알 수 없고 특정 조건을 만족할 때까지
- 변수 생성 불가 True / False 판단
- 조건식이 False가 될 때까지 무한반복
- for 변수 in 열거형(튜플,리스트,문자열 등 반복 가능한 객체)
In [60]:
# 초기식
# while 조건식 :
# 실행문
# 증감식
tmp = 0
for value in range(1,11) :
tmp += value
print(tmp)
print('while -')
tmp = 0
idx = 1
while idx <= 10 :
print(idx)
tmp += idx
idx += 1
55 while - 1 2 3 4 5 6 7 8 9 10
In [63]:
lst = ['한효주','조인성','류승룡','고윤정','류승범']
print('bool - ', bool(lst))
while lst :
print(lst.pop()) #원본에서 데이터를 제거
bool - True 류승범 고윤정 류승룡 조인성 한효주
In [1]:
from random import randint
print('guess game - while')
answer = randint(1,100)
isFlag = True
while isFlag :
guess = int(input('1 ~ 100 사이의 값을 입력하세요 : '))
if guess == ans60wer :
print('정답')
isFlag = False #또는 break
elif guess > answer :
print('down')
else :
print('up')
guess game - while 1 ~ 100 사이의 값을 입력하세요 : 4 up 1 ~ 100 사이의 값을 입력하세요 : 60 down 1 ~ 100 사이의 값을 입력하세요 : 40 up 1 ~ 100 사이의 값을 입력하세요 : 50 up 1 ~ 100 사이의 값을 입력하세요 : 55 up 1 ~ 100 사이의 값을 입력하세요 : 57 up 1 ~ 100 사이의 값을 입력하세요 : 59 정답
In [5]:
cnt = 10
while cnt > 0 :
if cnt == -1 :
break
cnt -= 1
else :
print('while ~ else')
while ~ else
돌발퀴즈
- while
- 1~100까지의 합
- 5의 배수의 합
- 3의 배수이면서 5의 배수의 합
In [15]:
cnt = sum01 = sum02 = sum03 = 0
while cnt <= 100 :
sum01 += cnt
if cnt % 5 == 0 :
sum02 += cnt
if cnt % 3 == 0 and cnt % 5 == 0 :
sum03 += cnt
cnt += 1
print(sum01)
print(sum02)
print(sum03)
5050 1050 315
In [17]:
inputDatas = []
while True :
data = input('먹고싶은 음식을 입력하세요 : (종료를 원하시면 엔터를 입력하세요)')
if data == '' :
break
inputDatas.append(data)
먹고싶은 음식을 입력하세요 : (종료를 원하시면 엔터를 입력하세요)마라탕 먹고싶은 음식을 입력하세요 : (종료를 원하시면 엔터를 입력하세요)
In [18]:
for food in inputDatas :
print(food, end = '\t')
마라탕
In [4]:
msg = '문자열 데이터를 while 구문으로 구현할 수 있을까?'
for char in msg :
print(char, end = '')
print()
char = 0
while msg :
print(msg[char], end = '')
char += 1
if char == len(msg):
break
print()
idx = 0
while idx < len(msg) :
print(msg[idx], end = '')
idx += 1
문자열 데이터를 while 구문으로 구현할 수 있을까? 문자열 데이터를 while 구문으로 구현할 수 있을까? 문자열 데이터를 while 구문으로 구현할 수 있을까?
In [23]:
#돌발퀴즈, 아래 문자열을 이용하여 몇문장인지, 각 문장의 단어의 수를 확인하고 싶다면? (hint : \n)
str = '''저는 파이썬을 강의하는 혈맥강사입니다.
지금은 부산 동아대 출강중입니다.
수강생분들이 착해서 편하게 강의중입니다.
여러분들의 앞날을 응원합니다.
혈맥강사와 함께 즐거운 교육이 되시길'''
sentences = []
words = []
for s in str.split('\n') :
sentences.append(s)
words.append(len(s.split()))
print('문장의 갯수 :', len(sentences))
result = dict(zip(sentences, words))
result
문장의 갯수 : 5
Out[23]:
{'저는 파이썬을 강의하는 혈맥강사입니다. ': 4, '지금은 부산 동아대 출강중입니다.': 4, '수강생분들이 착해서 편하게 강의중입니다.': 4, '여러분들의 앞날을 응원합니다.': 3, '혈맥강사와 함께 즐거운 교육이 되시길': 5}
In [18]:
str.split('\n')[0].split()
Out[18]:
['저는', '파이썬을', '강의하는', '혈맥강사입니다.']
In [46]:
tmpList = ['I' , 'AM' , 'study' , 'PYTHON' , 'language' , '!']
idx = 0
for idx in range(len(tmpList)) :
if len(tmpList[idx]) >= 3 :
print(tmpList[idx])
else :
pass
study PYTHON language
In [42]:
tmpList = ['greeting.py' , 'ex01.py' , 'intro.hwp' , 'bigdata.doc']
idx = 0
for idx in range(len(tmpList)) :
print(tmpList[idx].split('.')[0])
idx += 1
greeting ex01 intro bigdata
In [44]:
tmpList = ['greeting.py' , 'ex01.py' , 'intro.hwp' , 'bigdata.doc']
idx = 0
for idx in range(len(tmpList)) :
print(idx, tmpList[idx])
idx += 1
0 greeting.py 1 ex01.py 2 intro.hwp 3 bigdata.doc
In [67]:
price_list = [32100, 32150, 32000, 32500]
for i in range(len(price_list)) :
print(price_list[i])
i += 1
for price in price_list :
print(price)
32100 32150 32000 32500 32100 32150 32000 32500
In [5]:
lst = ["SK하이닉스", "삼성전자", "LG전자"]
for idx in range(len(lst)) :
print(len(lst[idx]))
idx += 1
6 4 4
In [8]:
lst = ['dog', 'cat', 'parrot']
for idx in range(len(lst)) :
print(lst[idx],len(lst[idx]))
idx += 1
dog 3 cat 3 parrot 6
In [11]:
lst = ['dog', 'cat', 'parrot']
for idx in range(len(lst)) :
print(lst[idx][0])
idx += 1
d c p
In [13]:
lst = ["가", "나", "다", "라"]
for idx in range(len(lst)) :
if idx % 2== 0 :
print(lst[idx])
idx += 1
가 다
In [14]:
lst = [3, -20, -3, 44]
for idx in range(len(lst)) :
if lst[idx] < 0 :
print(lst[idx])
idx += 1
-20 -3
In [18]:
lst = ["A", "b", "c", "D"]
for idx in range(len(lst)) :
if lst[idx].isupper() :
print(lst[idx])
idx += 1
A D
In [19]:
name = 'FineApplE'
name.upper()
Out[19]:
'FINEAPPLE'
In [62]:
apart = [ ["101호", "102호"], ["201호", "202호"], ["301호", "302호"] ]
for row in apart :
for col in row :
print(col)
print('*'*5)
101호 102호 ***** 201호 202호 ***** 301호 302호 *****