์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„(25.12.01~)

์ŠคํŒŒ๋ฅดํƒ€ ๋‚ด์ผ๋ฐฐ์›€์บ ํ”„_๋ณธ์บ ํ”„_data11๊ธฐ ๊น€์„ ์˜_TIL_Day 9

0๏ธโƒฃ 2026. 1. 5. 21:36

<์˜ค๋Š˜์˜ ํ•™์Šต>

  • Python ๋ผ์ด๋ธŒ ์„ธ์…˜ 1ํšŒ์ฐจ
  • SQL ์ฝ”๋“œ์นดํƒ€ (ํฌ๋กฌ ์ต์Šคํ…์…˜) / โญ๏ธ์ž…๋ฌธ ์™„๋ฃŒ

<ํ•™์Šต๋‚ด์šฉ ์ •๋ฆฌ>

# Python ๋ผ์ด๋ธŒ ์„ธ์…˜ 1ํšŒ์ฐจ

1๊ต์‹œ

  • print(์ถœ๋ ฅํ•  ๊ฐ’)
    ์ˆซ์ž: ๊ทธ๋Œ€๋กœ / ๋ฌธ์ž์—ด: ๋”ฐ์˜ดํ‘œ ์‚ฌ์šฉ
  • sep='๊ตฌ๋ถ„์ž' (๊ธฐ๋ณธ๊ฐ’: ๊ณต๋ฐฑ)
  • end="" : ๋์— ๋„ฃ์„ ๋ฌธ์ž
  • format() vs f-string
    : ๋ฌธ์ž์—ด์— ๋ณ€์ˆ˜ ๋„ฃ๊ธฐ
name = "๊น€์„ ์˜"
score = 100
print(f"{name}์˜ ์ ์ˆ˜๋Š” {score}์ž…๋‹ˆ๋‹ค.")
  • input()
    : ์‚ฌ์šฉ์ž์˜ ์ž…๋ ฅ์„ ์š”๊ตฌํ•˜๋Š” ํ•จ์ˆ˜.
    [๊ฒฐ๊ณผ ํƒ€์ž…: str]
  • int(), float()
    ๋ฌธ์ž์—ด์„ ๊ฐ๊ฐ ์ •์ˆ˜/์‹ค์ˆ˜๋กœ ํ˜•ํƒœ ๋ณ€ํ™˜
  • map(ํ•จ์ˆ˜, ๋ฐ˜๋ณต๊ฐ€๋Šฅ๊ฐ์ฒด)
    ํ•จ์ˆ˜๋ฅผ ๋ชจ๋“  ๋ฐ˜๋ณต๊ฐ€๋Šฅ๊ฐ์ฒด์— ์ ์šฉ. (roof ํ•จ์ˆ˜ ์—†์ด ๊ฐ„๋‹จํ•œ ํ•จ์ˆ˜ ๊ฐ€๋Šฅ)
    ๋ฆฌ์ŠคํŠธ๊ฐ€ ์•„๋‹Œ [๊ฐ์ฒด]๋กœ ๊ฐ’ ๋ฐ˜ํ™˜
  • .split()
    : ๋ฌธ์ž์—ด์„ ์ชผ๊ฐœ์„œ ์—ฌ๋Ÿฌ ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“œ๋Š” ๊ธฐ๋Šฅ / ๊ธฐ๋ณธ๊ฐ’: ๊ณต๋ฐฑ๋ฌธ์ž(์—ฌ๋Ÿฌ ๊ฐœ๋„ ๋จ)
    ๋ฌธ์ž์—ด์—๋งŒ ์ ์šฉ ๊ฐ€๋Šฅํ•œ ํ•จ์ˆ˜
    [๋ฐ˜ํ™˜: list]
    ์ƒํ™ฉ์— ๋”ฐ๋ผ ๊ณต๋ฐฑ์ด ๋ฌธ์ œ๋ฅผ ๋งŒ๋“ค๊ธฐ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์Šต๊ด€์ ์œผ๋กœ strip()**์„ ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•ฉ๋‹ˆ๋‹ค.
print("10 20 30".split())

print("a,b,c".split(","))

print("10   20    30".split())
  • replace
  • if else

โœ… ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ) ์•ˆ์ „ํ•œ ๊ณ„์‚ฐ๊ธฐ ๋งŒ๋“ค๊ธฐ

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

๋ชฉํ‘œ
์‚ฌ์šฉ์ž๊ฐ€ ๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ์•„๋ž˜๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

ํ•ฉ, ์ฐจ, ๊ณฑ, ๋‚˜๋ˆ—์…ˆ(์‹ค์ˆ˜)
์ž…๋ ฅ์ด ์ด์ƒํ•˜๋ฉด ์นœ์ ˆํ•œ ์•ˆ๋‚ด๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  ๋๋‚ด๊ธฐ
0์œผ๋กœ ๋‚˜๋ˆ„๋ฉด ๋ฉˆ์ถ”์ง€ ์•Š๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ

 

์ž…๋ ฅ ํ˜•์‹
์•„๋ž˜ ์ค‘ ์–ด๋–ค ํ˜•์‹์ด๋“  ๋ฐ›๋„๋ก ํ•ด ๋ด…์‹œ๋‹ค(๊ฐ€๋Šฅํ•˜๋ฉด):
10 3 (๊ณต๋ฐฑ)
10,3 (์‰ผํ‘œ)
10#3 (#)


ํžŒํŠธ:
์ž…๋ ฅ ๋ฌธ์ž์—ด์— ,๊ฐ€ ์žˆ์œผ๋ฉด split(',')
์•„๋‹ˆ๋ฉด #๊ฐ€ ์žˆ์œผ๋ฉด split('#')
์•„๋‹ˆ๋ฉด split() (๊ณต๋ฐฑ)
์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.

  • ์ตœ์ข… ์ œ์ถœ ์ฝ”๋“œ
s = input("๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š” (์˜ˆ: 10 3 / 10, 3 / 10#3)")
print("์ž…๋ ฅํ•œ ๊ฐ’: ", s)

# ๋ฐฉ๋ฒ•2) re.split(์ •๊ทœํ‘œํ˜„์‹, ๋ฌธ์ž์—ด) ์‚ฌ์šฉํ•˜๊ธฐ
import re
s_list = re.split(r'[^0-9]+', s)

# ๋ฐฉ๋ฒ•1) if ์กฐ๊ฑด๋ฌธ ์‚ฌ์šฉํ•˜๊ธฐ
'''
try:
  if "," in s:
    s_list = s.split(",")
  elif "#" in s:
    s_list = s.split("#")
  else:
    s_list = s.split()
except ValueError:
  print("์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์„ ์ž…๋ ฅํ•˜์„ธ์š”.(์˜ˆ: 10 3 / 10, 3 / 10#3)")
'''

# ์ˆซ์ž ๋‘ ๊ฐœ ์•„๋‹Œ , ๋‹ค๋ฅธ ๊ฐœ์ˆ˜๋กœ ์ž…๋ ฅ ์‹œ 
# len(): ๊ฐ’ ๊ฐœ์ˆ˜(๊ธธ์ด) ๊ตฌํ•˜๊ธฐ
if len(s_list) != 2:
  print("์ˆซ์ž '๋‘ ๊ฐœ'๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.")
else:
    a = int(s_list[0])
    b = int(s_list[1])
    if b == 0:
      print(f"์ž…๋ ฅํ•œ ๊ฐ’: {s}")
      print("๋‘ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 0์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.")
    else:
      print("๋‘ ์ˆ˜์˜ ํ•ฉ: ", f"{a + b}")
      print("๋‘ ์ˆ˜์˜ ์ฐจ: ", f"{a - b}")
      print("๋‘ ์ˆ˜์˜ ๊ณฑ: ", f"{a * b}")
      print("๋‘ ์ˆ˜์˜ ๋‚˜๋ˆ—์…ˆ: ", f"{a / b}")
  • ์˜ค๋‹ต๋…ธํŠธ
# \n์˜ ์œ„์น˜
# if๋ฌธ์—์„œ else์˜ ๋“ค์—ฌ์“ฐ๊ธฐ ์œ„์น˜

if len(s_list) != 2:
  print("์ˆซ์ž '๋‘ ๊ฐœ'๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.")
else:
    a = int(s_list[0])
    b = int(s_list[1])
    if b == 0:
      print(f"์ž…๋ ฅํ•œ ๊ฐ’: {s}"\n"๋‘ ๋ฒˆ์งธ ์ˆซ์ž๋Š” 0์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.")
      # \n์€ ๋ฌธ์ž์—ด ์•ˆ์—์„œ๋งŒ ์˜๋ฏธ๊ฐ€ ์žˆ์Œ.
      else: # else ๋“ค์—ฌ์“ฐ๊ธฐ ์œ„์น˜๋Š” If์™€ ๊ฐ™์•„์•ผ ํ•จ.
        print("๋‘ ์ˆ˜์˜ ํ•ฉ: ", f"{a + b}")
        print("๋‘ ์ˆ˜์˜ ์ฐจ: ", f"{a - b}")
        print("๋‘ ์ˆ˜์˜ ๊ณฑ: ", f"{a * b}")
        print("๋‘ ์ˆ˜์˜ ๋‚˜๋ˆ—์…ˆ: ", f"{a / b}")
โ“ ์ˆซ์ž ์ž…๋ ฅ ์‹œ, "๋ชจ๋“  ๋ฌธ์ž ์‚ฌ์šฉ ๊ฐ€๋Šฅ" ์กฐ๊ฑด ๋‹ฌ๊ธฐ
๋ฐฉ๋ฒ•1) ์ •๊ทœํ‘œํ˜„์‹ ์‚ฌ์šฉํ•˜๊ธฐ 
"์–ด๋–ค ๊ธฐํ˜ธ๊ฐ€ ์™€๋„ ์ƒ๊ด€์—†์ด, ์ˆซ์ž๋งŒ ๋ฝ‘์ž!" = ์ˆซ์ž๋ฅผ ๊ณจ๋ผ๋‚ด๋Š” ์ž์„
โ— import re
    ์ฝ”๋“œ ์•ˆ์—์„œ ๊ทœ์น™(๋ชจ์–‘)์„ ์ฐพ์•„๋‚ด๋Š” ์žฅ์น˜. (ex. ์ˆซ์ž๋งŒ ๊ณจ๋ผ๋‚ด๋Š” ๊ฒƒ.)
    ๋ฌธ์ž์—ด์„ ๊ทœ์น™์œผ๋กœ ์ฐพ๊ธฐ ์œ„ํ•œ ๋„๊ตฌ
โ— re.findall(๊ทœ์น™, ๋ฌธ์ž์—ด)
    : ๋ฌธ์ž์—ด์—์„œ ๊ทœ์น™์— ๋งž๋Š” ๊ฒƒ์„ ์ „๋ถ€ ์ฐพ์•„์„œ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด์ค˜.
    ๊ทœ์น™) r : ๋ฌธ์ž์—ด ์ฐพ๋Š” ๊ทœ์น™ ๋งจ ์•ž์— ๋ถ™์Œ
             \d : ์ˆซ์ž(0~9) 1๊ฐœ (\d\d: ์ˆซ์ž 2๊ฐœ /  \d\d\d: ์ˆซ์ž 3๊ฐœ)
             + : 1๊ฐœ ์ด์ƒ ๊ณ„์† (ex. \d+: ์ˆซ์ž๊ฐ€ 1๊ฐœ ์ด์ƒ ์ด์–ด์ง„ ๋ฉ์–ด๋ฆฌ)
import re

s = input("๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ")

nums = re.findall(r'\d+', s)
# ์ž…๋ ฅ:30abc3 → ์ถœ๋ ฅ: ['30', '3']

if len(nums) != 2:
    print("์ˆซ์ž ๋‘ ๊ฐœ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.")
else:
    a = int(nums[0])
    b = int(nums[1])

    print("ํ•ฉ:", a + b)
    print("์ฐจ:", a - b)
    print("๊ณฑ:", a * b)

    if b == 0:
        print("๋‚˜๋ˆ—์…ˆ: 0์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.")
    else:
        print("๋‚˜๋ˆ—์…ˆ:", a / b)
๋ฐฉ๋ฒ•2) re.split(์ •๊ทœํ‘œํ˜„์‹, ๋ฌธ์ž์—ด)
โ— ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๋ชจ๋“  ๋ฌธ์ž: [^0-9]
import re
 
s = input("๋‘ ์ˆ˜๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: ")
s_list = re.split([r'^0-9]+', s)

2๊ต์‹œ

1. ๋ณ€์ˆ˜ ์ด๋ฆ„ ์ง“๊ธฐ (Naming)

  1. ์˜์–ด/์ˆซ์ž/๋ฐ‘์ค„(_)๋งŒ ์‚ฌ์šฉ
  2. ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋ฉด ์•ˆ ๋จ
  3. ์ค‘๊ฐ„์— ๊ณต๋ฐฑ ๋ถˆ๊ฐ€
  4. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„: Score์™€ score๋Š” ๋‹ค๋ฆ„
  5. ์˜ˆ์•ฝ์–ด(ํ‚ค์›Œ๋“œ)๋Š” ๋ณ€์ˆ˜ ์ด๋ฆ„์œผ๋กœ ์“ฐ๋ฉด ์•ˆ ๋จ

2) ๋™์  ํƒ€์ดํ•‘(Dynamic Typing)๊ณผ type()

: ์ €์žฅํ•œ ๊ฐ’์— ๋”ฐ๋ผ Type์ด ๋ฐ”๋€๋‹ค

int() / float() / str()

3-2) ๋‹ค์ค‘ ํ• ๋‹น(Multiple Assignment)

a, b = 1, 2
swap(์„œ๋กœ ๋ฐ”๊พธ๊ธฐ): a, b = b, a

โœ… ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ: “์šฉ๋ˆ ๊ณ„์‚ฐ๊ธฐ” (๋ณ€์ˆ˜ ์ด์ •๋ฆฌ)

๐Ÿฏ TIP
f-string ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒŒ ๋” ๊น”๋”ํ•จ.
allowance = 50000
snack = 12000
transport = 15000
game = 8000

# TODO 1: ์ด ์ง€์ถœ ๊ณ„์‚ฐ
total_spent = snack + transport + game
print("์ด ์ง€์ถœ: ", total_spent, "์›")

# TODO 2: ๋‚จ์€ ๋ˆ ๊ณ„์‚ฐ
remaining = allowance - total_spent
print("๋‚จ์€ ๋ˆ: ", remaining, "์›")
allowance = 50000
snack = 12000
transport = 15000
game = 8000

# TODO 1: ์ด ์ง€์ถœ ๊ณ„์‚ฐ
total_spent = snack + transport + game
print(f"์ด ์ง€์ถœ: {total_spent:,}์›์ž…๋‹ˆ๋‹ค.")

# TODO 2: ๋‚จ์€ ๋ˆ ๊ณ„์‚ฐ
remaining = allowance - total_spent
print(f"๋‚จ์€ ๋ˆ: {remaining:,}์›์ž…๋‹ˆ๋‹ค.")

3๊ต์‹œ

1) ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€(immutable)

word = "hello"
word[0] = "H"   # โŒ ์—๋Ÿฌ

# ์žฌํ• ๋‹น ํ•ด์ค˜์•ผ ํ•จ.
word = "hello"
word = "Hello"

 

2) ๋ฌธ์ž์—ด์„ “์ˆ˜์ •”ํ•˜๊ณ  ์‹ถ์„ ๋•Œ??
replace("์›๋ž˜ ๊ฐ’", "๋ฐ”๊ฟ€ ๊ฐ’", ๋ช‡ ๋ฒˆ์งธ๊นŒ์ง€ ๋ฐ”๊ฟ€ ๊ฑด์ง€)

๊ธฐ๋ณธ๊ฐ’: ์ „์ฒด ์ˆ˜์ •

# ์˜ˆ์ œ 1: replace๋กœ ๋ฐ”๊พธ๊ธฐ
word = "hellohhhh"
new_word = word.replace("h", "H", 2)
print(word, "->", new_word)
## hellohhhh -> HelloHhhh

 

์Šฌ๋ผ์ด์‹ฑ์œผ๋กœ ์กฐํ•ฉํ•˜๊ธฐ

# ์˜ˆ์ œ 2: ์Šฌ๋ผ์ด์‹ฑ์œผ๋กœ ์กฐํ•ฉํ•˜๊ธฐ
word = "hello"
new_word = "H" + word[1:]
print(word, "->", new_word)
## hello -> Hello
  • .strip() : ๋ฌธ์ž์—ด ๊ณต๋ฐฑ ์ œ๊ฑฐํ•˜๊ธฐ
  • .upper() : ๋ฌธ์ž์—ด ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

โœ… ๋ฏธ๋‹ˆ ํ”„๋กœ์ ํŠธ: “๋ฌธ์žฅ ์ •๋ฆฌ๊ธฐ” ๋งŒ๋“ค๊ธฐ

๋”๋ณด๊ธฐ
๋”๋ณด๊ธฐ

๋ชฉํ‘œ
์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฌธ์žฅ์„ ์ž…๋ ฅ๋ฐ›์•„, ์•„๋ž˜๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ์„ธ์š”.

์–‘์ชฝ ๊ณต๋ฐฑ ์ œ๊ฑฐ(์•ž๋’ค)
๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ฐ”๊พธ๊ธฐ
์‰ผํ‘œ ,๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
์•„๋ž˜ ์…€์„ ์™„์„ฑํ•ด ๋ณด์„ธ์š”.

text = input("๋ฌธ์žฅ์„ ์ž…๋ ฅํ•˜์„ธ์š”: ")

# TODO 1: ๊ณต๋ฐฑ ์ œ๊ฑฐ
text.strip()
text = text.strip()
# TODO 2: ์†Œ๋ฌธ์ž ๋ณ€ํ™˜
text.lower()
text = text.lower()
# TODO 3: ์‰ผํ‘œ๋ฅผ ๊ณต๋ฐฑ์œผ๋กœ ๋ฐ”๊พธ๊ธฐ
text.replace(",", "")
text = text.replace(",", " ")

print(text)