Python 03 - Control Flow

Kjjeddยท2025๋…„ 12์›” 29์ผ

Python

๋ชฉ๋ก ๋ณด๊ธฐ
3/10
post-thumbnail

๐Ÿ“Œ Python ์ œ์–ด๋ฌธ (Control Flow)

์ œ์–ด๋ฌธ์€ ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ํ•ต์‹ฌ ๋ฌธ๋ฒ•์ด๋‹ค.
์กฐ๊ฑด์— ๋”ฐ๋ผ ํŒ๋‹จํ•˜๊ณ , ํ•„์š”ํ•œ ๋งŒํผ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋งŒ๋“ ๋‹ค.


๐Ÿค” ์™œ ์ œ์–ด๋ฌธ์ด ํ•„์š”ํ• ๊นŒ?

์ง€๊ธˆ๊นŒ์ง€ ์ž‘์„ฑํ•œ ์ฝ”๋“œ๋Š” ํ•ญ์ƒ ์œ„์—์„œ ์•„๋ž˜๋กœ๋งŒ ์‹คํ–‰๋๋‹ค.

print("1๋ฒˆ")
print("2๋ฒˆ")
print("3๋ฒˆ")

ํ•˜์ง€๋งŒ ํ˜„์‹ค์˜ ํ”„๋กœ๊ทธ๋žจ์€ ๋‹ค๋ฅด๋‹ค.

  • ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ๋งž์œผ๋ฉด ๋กœ๊ทธ์ธ, ์•„๋‹ˆ๋ฉด ๊ฑฐ์ ˆ
  • ์ฒด๋ ฅ์ด 0์ด๋ฉด ๊ฒŒ์ž„ ์ข…๋ฃŒ
  • ๋ชฉ๋ก์˜ ๋ชจ๋“  ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌ

์ด ๋ชจ๋“  ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋กœ ์ œ์–ด๋ฌธ์ด๋‹ค.


๐Ÿšฆ ์ œ์–ด๋ฌธ์˜ 3๊ฐ€์ง€ ์ข…๋ฅ˜

์ข…๋ฅ˜์—ญํ• ๋น„์œ 
if์กฐ๊ฑด์— ๋”ฐ๋ฅธ ๋ถ„๊ธฐ์‹ ํ˜ธ๋“ฑ
for์ •ํ•ด์ง„ ๋ฐ˜๋ณต์ถœ์„ ๋ถ€๋ฅด๊ธฐ
while์กฐ๊ฑด ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ

1๏ธโƒฃ ์กฐ๊ฑด๋ฌธ if / elif / else

โ€œ๋งŒ์•ฝ ~๋ผ๋ฉดโ€์ด๋ผ๋Š” ํŒ๋‹จ์„ ์ฝ”๋“œ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.

age = int(input("๋‚˜์ด๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”: "))

if age >= 65:
    price = 0
elif age >= 13:
    price = 30000
elif age >= 3:
    price = 15000
else:
    price = 0

print(f"๊ฒฐ์ œ ๊ธˆ์•ก: {price:,}์›")

โš ๏ธ ๋“ค์—ฌ์“ฐ๊ธฐ ์ฃผ์˜

ํŒŒ์ด์ฌ์€ ๋“ค์—ฌ์“ฐ๊ธฐ ์ž์ฒด๊ฐ€ ๋ฌธ๋ฒ•์ด๋‹ค.

if score >= 90:
print("A")   # โŒ IndentationError

๐Ÿ” ๋น„๊ต ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž์˜๋ฏธ
==๊ฐ™๋‹ค
!=๋‹ค๋ฅด๋‹ค
<, >ํฌ๊ธฐ ๋น„๊ต
<=, >=์ด์ƒ / ์ดํ•˜

โš ๏ธ =๋Š” ์ €์žฅ, ==๋Š” ๋น„๊ต


๐Ÿ”— ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž

์—ฐ์‚ฐ์ž์˜๋ฏธ
and๋‘˜ ๋‹ค ์ฐธ
orํ•˜๋‚˜๋ผ๋„ ์ฐธ
not๋ฐ˜๋Œ€
if (13 <= age <= 18) or is_member:
    print("ํ• ์ธ ์ ์šฉ")

๐Ÿ” ๋ฐ˜๋ณต๋ฌธ (Loop)

๋ฐ˜๋ณต๋ฌธ์€ ๊ฐ™์€ ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ์ œ์–ด๋ฌธ์ด๋‹ค.
์‚ฌ๋žŒ์ด ์ง์ ‘ ํ•˜๋‚˜์”ฉ ์ฒ˜๋ฆฌํ•˜๊ธฐ์—” ๋น„ํšจ์œจ์ ์ธ ์ž‘์—…์„, ์ปดํ“จํ„ฐ์—๊ฒŒ ๊ทœ์น™๋งŒ ์•Œ๋ ค์ฃผ๊ณ  ๋งก๊ธฐ๋Š” ๋ฐฉ๋ฒ•์ด๋ผ๊ณ  ๋ณด๋ฉด ๋œ๋‹ค.


๐Ÿค” ๋ฐ˜๋ณต๋ฌธ์ด ์™œ ํ•„์š”ํ• ๊นŒ?

ํ•™์ƒ 100๋ช…์˜ ์ ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜,
์žฅ๋ฐ”๊ตฌ๋‹ˆ์— ๋‹ด๊ธด ๋ชจ๋“  ์ƒํ’ˆ์˜ ๊ฐ€๊ฒฉ์„ ๋”ํ•˜๊ฑฐ๋‚˜,
์‚ฌ์šฉ์ž๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ์ž…๋ ฅ์„ ํ•  ๋•Œ๊นŒ์ง€ ๊ณ„์† ์งˆ๋ฌธํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด๋ณด์ž.

โŒ ๋ฐ˜๋ณต๋ฌธ์ด ์—†๋‹ค๋ฉด

  • ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๊ณ„์† ๋ณต์‚ฌํ•ด์„œ ์ž‘์„ฑํ•ด์•ผ ํ•œ๋‹ค
  • ์‹ค์ˆ˜ ํ™•๋ฅ ์ด ๊ธ‰๊ฒฉํžˆ ์ฆ๊ฐ€ํ•œ๋‹ค
  • ๋ฐ์ดํ„ฐ ๊ฐœ์ˆ˜๊ฐ€ ๋ฐ”๋€Œ๋ฉด ์ฝ”๋“œ ์ „์ฒด๋ฅผ ์ˆ˜์ •ํ•ด์•ผ ํ•œ๋‹ค

๊ทธ๋ž˜์„œ ํŒŒ์ด์ฌ์€ for๋ฌธ๊ณผ while๋ฌธ์ด๋ผ๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐ˜๋ณต๋ฌธ์„ ์ œ๊ณตํ•œ๋‹ค.


๐Ÿ”น for๋ฌธ โ€“ ํšŸ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๋ฐ˜๋ณต

for๋ฌธ์€ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋‚˜ ๋Œ€์ƒ์ด ๋ช…ํ™•ํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
๋ฆฌ์ŠคํŠธ, ๋ฌธ์ž์—ด, range() ๊ฐ™์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด ์ฒ˜๋ฆฌํ•œ๋‹ค.

fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์˜ค๋ Œ์ง€"]

for fruit in fruits:
print(f"๊ณผ์ผ: {fruit}")

์œ„ ์ฝ”๋“œ๋Š” ์ด๋ ‡๊ฒŒ ์ฝ์œผ๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ๋‹ค.

โ€œfruits ์•ˆ์— ์žˆ๋Š” ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ fruit๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ฒ˜๋ฆฌํ•œ๋‹คโ€

๐Ÿ“Œ range()์™€ ํ•จ๊ป˜ ์“ฐ๋Š” for๋ฌธ

๋ฆฌ์ŠคํŠธ๊ฐ€ ์—†์–ด๋„ ์ˆซ์ž ๋ฒ”์œ„๋งŒ ๋ฐ˜๋ณตํ•˜๊ณ  ์‹ถ์„ ๋•Œ range()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

for i in range(5):
    print(i)

range(5)๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ 5๊ฐœ๋ฅผ ๋งŒ๋“ ๋‹ค๋Š” ๋œป์ด๋‹ค.
์ฆ‰, 0, 1, 2, 3, 4๋งŒ ์ƒ์„ฑ๋œ๋‹ค.

  • range(๋) โ†’ 0๋ถ€ํ„ฐ ๋-1
  • range(์‹œ์ž‘, ๋) โ†’ ์‹œ์ž‘๋ถ€ํ„ฐ ๋-1
  • range(์‹œ์ž‘, ๋, ๊ฐ„๊ฒฉ) โ†’ ๊ฐ„๊ฒฉ๋งŒํผ ์ฆ๊ฐ€

๐Ÿ“Œ enumerate() โ€“ ์ˆœ์„œ ๋ฒˆํ˜ธ๊ฐ€ ํ•„์š”ํ•  ๋•Œ

for๋ฌธ์—์„œ ๊ฐ’๊ณผ ํ•จ๊ป˜ ์ธ๋ฑ์Šค(๋ฒˆํ˜ธ)๊ฐ€ ํ•„์š”ํ•˜๋ฉด enumerate()๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

fruits = ["์‚ฌ๊ณผ", "๋ฐ”๋‚˜๋‚˜", "์˜ค๋ Œ์ง€"]

for index, fruit in enumerate(fruits, start=1):
print(f"{index}๋ฒˆ์งธ ๊ณผ์ผ: {fruit}")

๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ ๋ฐ”๋€Œ์–ด๋„ ๋ฒˆํ˜ธ๋ฅผ ์ž๋™์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ์–ด ์‹ค๋ฌด์—์„œ ์ž์ฃผ ์“ฐ์ธ๋‹ค.


๐Ÿ“Œ zip() โ€“ ์—ฌ๋Ÿฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฌถ์–ด์„œ ๋ฐ˜๋ณต

์—ฌ๋Ÿฌ ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐ™์€ ์ธ๋ฑ์Šค๋ผ๋ฆฌ ๋ฌถ์–ด์„œ ์ฒ˜๋ฆฌํ•˜๊ณ  ์‹ถ์„ ๋•Œ zip()์„ ์‚ฌ์šฉํ•œ๋‹ค.

names = ["์ฒ ์ˆ˜", "์˜ํฌ", "๋ฏผ์ˆ˜"]
scores = [85, 92, 78]

for name, score in zip(names, scores):
print(f"{name}: {score}์ ")

ํ•™์ƒ ์ด๋ฆ„๊ณผ ์ ์ˆ˜์ฒ˜๋Ÿผ ์—ฐ๊ด€๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ๋งค์šฐ ์œ ์šฉํ•˜๋‹ค.


๐Ÿ”น while๋ฌธ โ€“ ์กฐ๊ฑด ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต

while๋ฌธ์€ ๋ฐ˜๋ณต ํšŸ์ˆ˜๋ฅผ ๋ฏธ๋ฆฌ ์•Œ ์ˆ˜ ์—†์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.
์กฐ๊ฑด์ด True์ธ ๋™์•ˆ ๊ณ„์† ๋ฐ˜๋ณตํ•˜๋ฉฐ, ์กฐ๊ฑด์ด False๊ฐ€ ๋˜๋ฉด ์ข…๋ฃŒ๋œ๋‹ค.

count = 0

while count < 5:
print(count)
count += 1

while๋ฌธ์—์„œ๋Š” ์กฐ๊ฑด์„ ๋ณ€ํ™”์‹œํ‚ค๋Š” ์ฝ”๋“œ๊ฐ€ ๋ฐ˜๋“œ์‹œ ํ•„์š”ํ•˜๋‹ค.
๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๋ฌดํ•œ ๋ฃจํ”„์— ๋น ์ง„๋‹ค.


โš ๏ธ ๋ฌดํ•œ ๋ฃจํ”„ ์ฃผ์˜

count = 0

while count < 5:
print(count)

# count += 1 ์ด ์—†์œผ๋ฉด ๋ฌดํ•œ ๋ฐ˜๋ณต!

๋ฌดํ•œ ๋ฃจํ”„๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋ฉˆ์ถ”์ง€ ๋ชปํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์กฐ๊ฑด๊ณผ ์ฆ๊ฐ์‹์ด ํ•ญ์ƒ ํ•จ๊ป˜ ์žˆ๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•œ๋‹ค.


๐Ÿ“Œ while True + break ํŒจํ„ด

์ข…๋ฃŒ ์‹œ์ ์„ ๋‚ด๋ถ€ ์กฐ๊ฑด์œผ๋กœ ์ œ์–ดํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.

while True:
    command = input("๋ช…๋ น์–ด ์ž…๋ ฅ(q: ์ข…๋ฃŒ): ")
if command == "q":
    print("ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ")
    break
else:
    print(f"์ž…๋ ฅ๋œ ๋ช…๋ น์–ด: {command}")

๋ฉ”๋‰ด ์‹œ์Šคํ…œ, ๊ฒŒ์ž„ ๋ฃจํ”„, ์ฑ„ํŒ… ํ”„๋กœ๊ทธ๋žจ ๋“ฑ์—์„œ ์ž์ฃผ ํ™œ์šฉ๋œ๋‹ค.


โญ๏ธ break์™€ continue

break โ€“ ๋ฐ˜๋ณต๋ฌธ ์ฆ‰์‹œ ์ข…๋ฃŒ

์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด ๋ฐ˜๋ณต์„ ์™„์ „ํžˆ ์ค‘๋‹จํ•œ๋‹ค.

for i in range(1, 10):
    if i == 5:
        break
    print(i)

continue โ€“ ์ด๋ฒˆ ๋ฐ˜๋ณต๋งŒ ๊ฑด๋„ˆ๋›ฐ๊ธฐ

ํ˜„์žฌ ๋ฐ˜๋ณต๋งŒ ์Šคํ‚ตํ•˜๊ณ  ๋‹ค์Œ ๋ฐ˜๋ณต์œผ๋กœ ์ด๋™ํ•œ๋‹ค.

for i in range(1, 11):
    if i % 2 == 1:
        continue
    print(i)

โœ… ๋ฐ˜๋ณต๋ฌธ ํ•ต์‹ฌ ์ •๋ฆฌ

  • for๋ฌธ: ํšŸ์ˆ˜ยท๋Œ€์ƒ์ด ๋ช…ํ™•ํ•  ๋•Œ
  • while๋ฌธ: ์กฐ๊ฑด์ด ์ค‘์š”ํ•˜๊ณ  ์ข…๋ฃŒ ์‹œ์ ์ด ๋ถˆ๋ช…ํ™•ํ•  ๋•Œ
  • break: ๋ฐ˜๋ณต์„ ์™„์ „ํžˆ ์ข…๋ฃŒ
  • continue: ์ด๋ฒˆ ๋ฐ˜๋ณต๋งŒ ๊ฑด๋„ˆ๋œ€
  • ๋ฐ˜๋ณต๋ฌธ์€ ๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ์ž๋™ํ™”์˜ ํ•ต์‹ฌ

โœ… ํ•ต์‹ฌ ์š”์•ฝ

  • if: ์กฐ๊ฑด ๋ถ„๊ธฐ
  • for: ํšŸ์ˆ˜๊ฐ€ ์ •ํ•ด์ง„ ๋ฐ˜๋ณต
  • while: ์กฐ๊ฑด ๊ธฐ๋ฐ˜ ๋ฐ˜๋ณต
  • ๋…ผ๋ฆฌ ์—ฐ์‚ฐ์ž๋Š” ์กฐ๊ฑด ์กฐํ•ฉ์˜ ํ•ต์‹ฌ
  • break / continue๋กœ ํ๋ฆ„ ์ œ์–ด

profile
Gongbuhaja

0๊ฐœ์˜ ๋Œ“๊ธ€