๊ฐœ์ธ๊ณต๋ถ€/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