๐Ÿ’ฟ Data/๋ถ€ํŠธ์บ ํ”„

[TIL] 93. python ๋ฌธ์ œํ•ด๊ฒฐ

Jayden1116 2022. 3. 29. 20:32

ํ‚ค์›Œ๋“œ

  • Comprehension - list/set/dictionary
  • Pseudocode(์˜์‚ฌ์ฝ”๋“œ)
  • ์ง€์—ญ๋ณ€์ˆ˜(local)/์ „์—ญ๋ณ€์ˆ˜(global)
  • ์˜ˆ์™ธ์ฒ˜๋ฆฌ - else/except/raise/assert

๋ฌธ์ œํ•ด๊ฒฐ

  • ๋ฌธ์ œํ•ด๊ฒฐ์„ ์œ„ํ•ด ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋‹จ์œ„๋กœ ๋ถ„ํ• 
  • ์ตœ์†Œํ•œ์˜ ์‹œ๊ฐ„์„ ํ™œ์šฉ ๋ฌธ์ œ ๋ถ„์„
  • ์ „์ฒด ๋ฌธ์ œ๊ฐ€ ํ’€๋ฆฌ์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ผ๋ถ€ ํ’€๋ฆฌ๋Š” ๋ถ€๋ถ„๋ถ€ํ„ฐ ์ฐพ์•„์„œ ํ•ด๊ฒฐ

Comprehension

ํ•œ ์ค„๋กœ ํŒŒ์ด์ฌ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ

  1. ์ฝ”๋“œ๋ฅผ ๊ฐ„์†Œํ™”ํ•˜์—ฌ ์ง๊ด€์ ์ด๋ฉฐ ๋น ๋ฆ„
  2. ๋‹จ์  : ๋„ˆ๋ฌด ์—ฌ๋Ÿฌ ์กฐ๊ฑด ์ค‘์ฒฉ ์‹œ ๊ฐ€๋…์„ฑ์ด ๋–จ์–ด์ง, ๋˜๋ ค ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๋” ๋งŽ์ด ์ฐจ์ง€ํ•  ์ˆ˜ ์žˆ์Œ
  3. ํŒŒ์ด์ฌ ์ฝœ๋ ‰์…˜ ์ž๋ฃŒํ˜• ์ค‘ list, set, dictionary 3๊ฐ€์ง€๊ฐ€ ์ปดํ”„๋ฆฌํ—จ์…˜ ํ‘œํ˜„ ๊ฐ€๋Šฅ
# ๋ฆฌ์ŠคํŠธ ์ปดํ”„๋ฆฌํ—จ์…˜ ์˜ˆ์‹œ

arr_a = [1, 2, 3, 4]
arr_b = [2, 3, 4, 5]

ans = [a for a in arr_a for b in arr_b if a == b]

print(ans) # ์ถœ๋ ฅ : [2, 3, 4]

Pseudocode(์˜์‚ฌ์ฝ”๋“œ)

  • ์ฝ”๋”ฉ์ด ๊ฑด์ถ•์ด๋ผ๋ฉด ์˜์‚ฌ์ฝ”๋“œ๋Š” ์„ค๊ณ„๋„
  • ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ ์ „, ๋‚ด๊ฐ€ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ์ž‘์—…
  • ํ”„๋กœ๊ทธ๋žจ์ด ์ปค์งˆ์ˆ˜๋ก, ์–ด๋ ค์šธ์ˆ˜๋ก, ํ˜‘์—…์ด ํ•„์š”ํ• ์ˆ˜๋ก ๋” ์ค‘์š”ํ•œ ์ž‘์—…(์ฝ”๋“œ์˜ ์˜๋„๋ฅผ ๋ช…ํ™•ํžˆ ์ „๋‹ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ)
### ์˜์‚ฌ์ฝ”๋“œ ์˜ˆ์‹œ

function div
For๋ฐ˜๋ณต๋ฌธ (i = 1๋ถ€ํ„ฐ i<=10๊นŒ์ง€, ๋ฐ˜๋ณตํ• ๋•Œ๋งˆ๋‹ค i๊ฐ’ 1์”ฉ ์ฆ๊ฐ€) 
{
    If i๊ฐ€ 3์œผ๋กœ ๋‚˜๋ˆ ์ง€๋Š” ๊ฒฝ์šฐ,
        print 3์œผ๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.
    If i๊ฐ€ 5๋กœ ๋‚˜๋ˆ ์ง€๋Š” ๊ฒฝ์šฐ
        print 5๋กœ ๋‚˜๋ˆ ์ง„๋‹ค.
    If i๊ฐ€ 3๊ณผ 5๋กœ ๋‚˜๋ˆ ์ง€์ง€์•Š๋Š” ๊ฒฝ์šฐ,
        print ๋‚˜๋ˆ ์ง€์ง€ ์•Š์Œ
}

### ์˜์‚ฌ์ฝ”๋“œ์— ๋”ฐ๋ฅธ ์‹ค์ œ ์ฝ”๋“œ ์ž‘์„ฑ

def div():
  for i in range(1,11):
    if i % 3 == 0: 
      print('์ˆซ์ž',i, '=>','3์œผ๋กœ ๋‚˜๋ˆ ์ง')
    elif i % 5 == 0: 
      print('์ˆซ์ž',i, '=>','5๋กœ ๋‚˜๋ˆ ์ง')
    else: 
      print('๊ทธ์™ธ',i, '=>','์ˆซ์ž 3๊ณผ 5๋กœ ๋‚˜๋ˆ ์ง€์ง€ ์•Š์Œ')

div()

์ง€์—ญ๋ณ€์ˆ˜(Local)์™€ ์ „์—ญ๋ณ€์ˆ˜(Global)

  • ์ง€์—ญ๋ณ€์ˆ˜ : ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ •์˜๋œ ๋ณ€์ˆ˜๋กœ, ํ•จ์ˆ˜ ๋‚ด์—์„œ๋งŒ ์ˆ˜์ •ํ•˜๊ณ  ์ฝ์„ ์ˆ˜ ์žˆ์Œ
  • ์ „์—ญ๋ณ€์ˆ˜ : ํ•˜๋‚˜์˜ ํŒŒ์ด์ฌ ํŒŒ์ผ ์ „์ฒด์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ณ€์ˆ˜

glo = 'jayden' ### ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ

def hi():
    lo = 'goguma' ### ์ง€์—ญ๋ณ€์ˆ˜ ์„ ์–ธ

    global glo2  ### ํ•จ์ˆ˜ ๋‚ด์—์„œ ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธํ•˜๋Š” ๋ฐฉ๋ฒ•
    glo2 = 'hodu'

์˜ˆ์™ธ์ฒ˜๋ฆฌ

  • ์‹ค์ œ ์ฝ”๋“œ ์—๋Ÿฌ ๋ฐœ์ƒ ์‹œ, ์ž‘์„ฑํ•œ ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™์„ ๋ฉˆ์ถ”๊ฒŒ ๋จ
  • ๋‹จ์ˆœํ•œ ์ฝ”๋“œ์—์„œ๋Š” ์˜ˆ์™ธ์ฒ˜๋ฆฌ์˜ ํ™œ์šฉ๋„๊ฐ€ ๋‚ฎ์œผ๋‚˜, ์‹ค์ œ ์„œ๋น„์Šค๋กœ ๊ตฌํ˜„ ์‹œ ํŠน์ • ์ƒํ™ฉ์— ํ”„๋กœ๊ทธ๋žจ์ด ์ž‘๋™์„ ๋ฉˆ์ถ”๋Š” ๊ฒฝ์šฐ๋Š” ์—†์–ด์•ผํ•จ
  • ์ฆ‰, ์›ํ•˜๋Š” ๊ฒฐ๊ณผ ์ด์™ธ์˜ ์ƒ๊ฐ์น˜๋ชปํ•œ ์—๋Ÿฌ์— ๋Œ€ํ•ด์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๊ฒŒ๋” ํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”

[์˜ˆ์™ธ์ฒ˜๋ฆฌ] try, except, finally

try:
    a
except:
    b
### a์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜๊ณ  ์˜ˆ์™ธ ์ƒํ™ฉ ์‹œ b๋ฅผ ์‹คํ–‰

try:
    a
except ๋ฐœ์ƒ ์˜ค๋ฅ˜:
    b
### a์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜๊ณ  '๋ฐœ์ƒ ์˜ค๋ฅ˜' ์‹œ b๋ฅผ ์‹คํ–‰(์ฆ‰, ์œ„์˜ ๊ฒฝ์šฐ๋ณด๋‹ค ๋” ์ž‘์€ ๋ฒ”์œ„ -> ํŠน์ • ์˜ค๋ฅ˜์— ๋Œ€ํ•ด์„œ๋งŒ ์˜ˆ์™ธ์ฒ˜๋ฆฌ)

try:
    a
finally:
    b
### a์— ๋Œ€ํ•ด ์‹คํ–‰ํ•˜๊ณ , a์— ๋Œ€ํ•ด ์–ด๋–ค ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์™€ ์ƒ๊ด€์—†์ด b๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

try:
    age=int(input('๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: '))
except:
    print('์ž…๋ ฅ์ด ์ •ํ™•ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.')
else:
    if age <= 18:
        print('๋ฏธ์„ฑ๋…„์ž๋Š” ์ถœ์ž…๊ธˆ์ง€์ž…๋‹ˆ๋‹ค.')
    else:
        print('ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค.')
### else๋ฅผ ํ™œ์šฉํ•œ ์ข‹์€ ์˜ˆ์‹œ(์˜ค๋ฅ˜๊ฐ€ ์—†์„ ๋•Œ๋งŒ, else๊ฐ€ ์‹คํ–‰๋œ๋‹ค.)

[์˜ˆ์™ธ์ฒ˜๋ฆฌ] raise, assert

  • raise : ๊ฐ•์ œ๋กœ ์˜ค๋ฅ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ช…๋ น์–ด
  • assert : ํŠน์ • ๊ตฌ๋ฌธ์ด True ์ธ ๊ฒฝ์šฐ passํ•˜๊ณ , False ์ธ ๊ฒฝ์šฐ ์—๋Ÿฌ ๋ฐœ์ƒ
### raise๋ฅผ ์ด์šฉํ•˜์—ฌ ์—๋Ÿฌ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ
a = '5'

if type(a) != 'int':
    raise Exception('์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.')

### ์œ„์˜ ์ƒํ™ฉ์„ assert๋กœ ๊ตฌํ˜„

a = '5'

assert type(a) == 'int', Exception('์ˆซ์ž๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.')