๊ฐ์ธ๊ณต๋ถ/Python
44. Python ์๋ฃ๊ตฌ์กฐ ์ฐ์ต๋ฌธ์
LEE_BOMB
2021. 11. 4. 23:24
๋ฌธ1) ๋ค์ lst ๋ณ์๋ฅผ ๋์์ผ๋ก ๊ฐ ๋จ๊ณ๋ณ๋ก list๋ฅผ ์ฐ์ฐํ์์ค.
<< ์ถ๋ ฅ ๊ฒฐ๊ณผ >>
๋จ๊ณ1 : [10, 1, 5, 2, 10, 1, 5, 2]
๋จ๊ณ2 : [10, 1, 5, 2, 10, 1, 5, 2, 20]
๋จ๊ณ3 : [1, 2, 1, 2]
lst = [10, 1, 5, 2] # list ์์ฑ
๋จ๊ณ1 : lst ์์๋ฅผ 2๊ฐ ์์ฑํ์ฌ result ๋ณ์์ ์ ์ฅ/์ถ๋ ฅ
result = lst * 2
print('๋จ๊ณ1 : ', result) # [10, 1, 5, 2, 10, 1, 5, 2]
๋จ๊ณ2 : lst์ ์ฒซ๋ฒ์งธ ์์์ 2๋ฅผ ๊ณฑํ์ฌ result ๋ณ์์ ์ถ๊ฐ/์ถ๋ ฅ
first = result[0] * 2
result.append(first)
print('๋จ๊ณ2 :', result) # [10, 1, 5, 2, 10, 1, 5, 2, 20]
๋จ๊ณ3 : result์ ์ง์ ๋ฒ์งธ ์์๋ง result2 ๋ณ์์ ์ถ๊ฐ/์ถ๋ ฅ
result2 = result[1::2]
print(result2) # [1, 2, 1, 2]
print('๋จ๊ณ3 :', result2)
๋ฌธ2) ํค๋ณด๋๋ก 5๋ช ์ ํ์ ์ฑ์ ์ ์ ๋ ฅ๋ฐ์์ ๋ฆฌ์คํธ์ ์ ์ฅํ๊ณ , 5๋ช ํ์์ ์ฑ์ ์ ํ๊ท ์ ๊ตฌํ๊ณ , 80์ ์ด์ ์ฑ์ ์ ๋ฐ์ ํ์์ ์ซ์๋ฅผ ๊ณ์ฐํ์ฌ ์ถ๋ ฅํ์์ค.
<์กฐ๊ฑด> ํ๊ท = ์ด์ / ์ธ์์
<์ถ๋ ฅ ์์>
์ฑ์ ์ ์ ๋ ฅํ์์: 50
์ฑ์ ์ ์ ๋ ฅํ์์: 85
์ฑ์ ์ ์ ๋ ฅํ์์: 60
์ฑ์ ์ ์ ๋ ฅํ์์: 55
์ฑ์ ์ ์ ๋ ฅํ์์: 82
์ฑ์ ์ ํ๊ท ์ 66.4 ์ ๋๋ค.
80์ ์ด์ ์ฑ์ ์ ๋ฐ์ ํ์์ 2 ๋ช ์ ๋๋ค.
scores = [] # ์ ์ ์ ์ฅ
tot = 0 # ์ด์ ์ ์ฅ
for i in range(5) : # 5๋ช
ํ์
s = int(input('์ฑ์ ์ ์
๋ ฅํ์ธ์: '))
scores.append(s) # ์ฑ์ ์ถ๊ฐ
tot += s # ์ด์ ๊ณ์ฐ
ํ๊ท ๊ณ์ฐ
avg = tot / len(scores)
cnt = 0
for s in scores :
if s >= 80 : # 80์ ์ด์ ํ์์ ์นด์ดํธ
cnt += 1
print('์ฑ์ ํ๊ท ์ %.2f ์
๋๋ค.'%avg)
print('80์ ์ด์ ์ฑ์ ์ ๋ฐ์ ํ์์ %d๋ช
์
๋๋ค.'%cnt)
๋ฌธ3) ๋ฆฌ์คํธ(list)์ ์ถ๊ฐํ ์์์ ๊ฐ์๋ฅผ ํค๋ณด๋๋ก ์ ๋ ฅ ๋ฐ์ ํ, ์ ๋ ฅ ๋ฐ์ ์ ๋งํผ ์์ ์ซ์๋ฅผ ๋ฆฌ์คํธ์ ์ถ๊ฐํ๋ค. ์ดํ ๋ฆฌ์คํธ์์ ์ฐพ์ ๊ฐ์ ํค๋ณด๋๋ก ์ ๋ ฅํ ํ ๋ฆฌ์คํธ์ ํด๋น ๊ฐ์ด ์์ผ๋ฉด "YES", ์์ผ๋ฉด "NO"๋ฅผ ์ถ๋ ฅํ์์ค.
<์ถ๋ ฅ ์์1>
list ๊ฐ์ : 5
1
2
3
4
5
3
YES
<์ถ๋ ฅ ์์2>
list ๊ฐ์ : 3
1
2
4
3
NO
size = int(input('list ๊ฐ์ : ')) # list ํฌ๊ธฐ ์
๋ ฅ
lst = [] # ๋น list
for i in range(size) :
lst.append(int(input()))
if int(input()) in lst : # ์ฐพ์ ๊ฐ ์
๋ ฅ(prompt ์์)
print('YES')
else :
print('NO')
๋ฌธ4) ๋ค์ origin_data๋ฅผ ๋์์ผ๋ก ๋ค์ ์ถ๋ ฅ๊ฒฐ๊ณผ์ ๊ฐ์ด ์ฒ๋ฆฌํ์์ค.
<์ถ๋ ฅ๊ฒฐ๊ณผ>
์๋ง ์ ๋ง
๊ฐ์์ง ๊ณ ์์ด
๋ํ๋ฏผ๊ตญ ์๋ ์์ธ
origin_data = [['์๋ง', '์ ๋ง'], ['๊ฐ์์ง', '๊ณ ์์ด'], ['๋ํ๋ฏผ๊ตญ', '์๋', '์์ธ']]
pro_data = []
for tokens in origin_data :
re = ' '.join(tokens)
print(re)
pro_data.append(re)
๋ฌธ5) message์์ 'spam' ์์๋ 1 'ham' ์์๋ 0์ผ๋ก dummy ๋ณ์๋ฅผ ์์ฑํ์์ค.
<์กฐ๊ฑด> list + for ํ์1) ์ ์ฉ
<์ถ๋ ฅ๊ฒฐ๊ณผ>
[1, 0, 1, 0, 1]
๋ฌธ5-2) message์์ 'spam' ์์๋ง ์ถ์ถํ์ฌ spam_list์ ์ถ๊ฐํ์์ค.
<์กฐ๊ฑด> list + for + if ํ์2) ์ ์ฉ
<์ถ๋ ฅ๊ฒฐ๊ณผ>
['spam', 'spam', 'spam']
message = ['spam', 'ham', 'spam', 'ham', 'spam']
๋ฌธ5
dummy = [ ์คํ๋ฌธ for msg in message]
dummy = [ 1 if msg == 'spam' else 0 for msg in message]
์คํ๋ฌธ : if๋ฌธ 3ํญ ์ฐ์ฐ์ ์ด์ฉ
print(dummy) # [1, 0, 1, 0, 1]
๋ฌธ5-2
spam_list = [ msg for msg in message if msg == 'spam']
print(spam_list) # ['spam', 'spam', 'spam']
๋ฌธ6) ์ค๋ณต ๋์ง ์์ ์ง์์ ๊ฐ ์ง์๋ณ ๋น๋์๋ฅผ ์ถ๋ ฅํ์์ค.
<<์ถ๋ ฅ ๊ฒฐ๊ณผ >>
์ค๋ณต๋์ง ์์ ์ง์ : ['์ฌ์ฅ', '๊ณผ์ฅ', '๋๋ฆฌ', '๋ถ์ฅ'] - set()
๊ฐ ์ง์๋ณ ๋น๋์ : {'๊ณผ์ฅ': 2, '๋ถ์ฅ': 1, '๋๋ฆฌ': 2, '์ฌ์ฅ': 1} - ๋จ์ด๋น๋์
position = ['๊ณผ์ฅ', '๋ถ์ฅ', '๋๋ฆฌ', '์ฌ์ฅ', '๋๋ฆฌ', '๊ณผ์ฅ'] # list
lsit -> set -> list
re = list(set(position))
print('์ค๋ณต๋์ง ์์ ์ง์ : ', re)
pos_cnt = {}
for pos in position :
pos_cnt[pos] = pos_cnt.get(pos, 0) + 1
print('๊ฐ ์ง์๋ณ ๋น๋์ : ', pos_cnt)
๋ฌธ7) price์๋ ๊ณผ์ผ ๊ฐ๊ฒ์ ์ง์ด๋ ๊ณผ์ผ๊ณผ ๊ฐ๊ฒฉ์ด ์ ์ฅ๋์ด ์๊ณ , buy๋ ๊ณ ๊ฐ์ด ๊ตฌ๋งคํ ์ฅ๋ฐ๊ตฌ๋์ด๋ค.
<์กฐ๊ฑด> [list + for] ํ์์ ์ ์ฉํ์ฌ ๊ตฌ๋งค ์ํ ์ด ๊ธ์ก(tot_bill)์ ๊ณ์ฐํ์์ค.
<์ถ๋ ฅ ๊ฒฐ๊ณผ>
์ด ๊ธ์ก : 18,500
๊ณผ์ผ๊ฐ๊ฒ ์ง์ด ์ํ
price = {'์ฌ๊ณผ':2000, '๋ณต์ญ์' : 3000, '๋ธ๊ธฐ' : 2500}
๊ตฌ๋งค ์ํ
buy = {'์ฌ๊ณผ' : 3, '๋ธ๊ธฐ' : 5}
๊ตฌ๋งค ์ํ ์ด ๊ธ์ก
bill = [price[i] * buy[i] for i in buy.keys() ] # ๋จ๊ฐ*์๋
print(bill) # [6000, 12500]
tot_bill = sum(bill)
print(tot_bill)
print('์ด ๊ธ์ก : {0:3,d}'.format(tot_bill))
# ์ด ๊ธ์ก : 18,500
๋ฌธ8) ๋ค์ movie ๊ฐ์ฒด๋ฅผ ๋์์ผ๋ก ํ์ 8์ด์์ธ ์ํ ์ ๋ชฉ๊ณผ ์ ์ฒด ๋์ ๊ด๊ฐ์๋ฅผ ์ถ๋ ฅํ์์ค.
<์ถ๋ ฅ ๊ฒฐ๊ณผ>
์ํ์ ๋ชฉ : ๊ดํด
์ํ์ ๋ชฉ : ๊ด์
๋์ ๊ด๊ฐ์ = 2,100
movie = {'๊ดํด' : [9.24, 1200], '๊ณต์' : [7.86, 500], '๊ด์' : [8.01, 900]}
tot = 0
for key, values in movie.items() :
if values[0] >= 8.0 : # ํ์ 8.0 ์ด์
print('์ํ์ ๋ชฉ : %s'%key) # ์ํ์ ๋ชฉ ์ถ๋ ฅ
tot += values[1] # ๊ด๊ฐ์ ๋์
print('๋์ ๊ด๊ฐ์ = ',format(tot, '3,d'))
์ํ์ ๋ชฉ : ๊ดํด
์ํ์ ๋ชฉ : ๊ด์
๋์ ๊ด๊ฐ์ = 2,100