๐Ÿ› ๏ธBackend/โšกPython

[Python] 5๊ฐ• - ์ˆœ์ฐจ ๊ตฌ์กฐ ๋ฐ ์ œ์–ด ๊ตฌ์กฐ

junbin2 2025. 4. 15. 00:55

1. ์ œ์–ด ๊ตฌ์กฐ์˜ ์ดํ•ด

(1) ์ œ์–ด ๊ตฌ์กฐ๋ž€?

 - ํ”„๋กœ๊ทธ๋žจ์˜ ํ๋ฆ„(์‹คํ–‰ ์ˆœ์„œ)์„ ๊ฐœ๋ฐœ์ž๊ฐ€ ์˜๋„ํ•œ ๋Œ€๋กœ ๋ฐ”๊พธ๋Š” ๊ตฌ์กฐ

 - ์‰ฝ๊ฒŒ ๋งํ•ด, ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฝ”๋“œ๋ฅผ ์œ„์—์„œ ์•„๋ž˜๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰ํ•จ.

 - ํ•˜์ง€๋งŒ, ๋•Œ๋ก  ์กฐ๊ฑด๋ฌธ์ด๋‚˜ ๋ฐ˜๋ณต๋ฌธ์„ ํ†ตํ•ด ๋‹ค๋ฅด๊ฒŒ ์‹คํ–‰๋˜๊ฑฐ๋‚˜ ๋ฐ˜๋ณต์ด ๋˜์–ด๋Š” ๊ตฌ์กฐ๊ฐ€ ์žˆ์Œ. ์ด๊ฒƒ์ด ์ œ์–ด ๊ตฌ์กฐ์ž„.

 

(2) ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„

 - ์ ˆ์ฐจ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์˜ ํ•˜์œ„ ๊ฐœ๋…

 - ํ”„๋กœ๊ทธ๋žจ์„ ๋ช…ํ™•ํ•˜๊ณ  ๊ฐ„๊ฒฐํ•˜๊ฒŒ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•๋ก ์ด๋‹ค.

 - ํ”„๋กœ๊ทธ๋žจ ํ๋ฆ„์„ ์ œ์–ด ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•ด ์„ธ๋ถ„ํ™” ๋ฐ ๋ชจ๋“ˆํ™” ํ•˜๋Š” ๋ฐฉ์‹์„ ๊ฐ•์กฐํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ํŒจ๋Ÿฌ๋‹ค์ž„์ด๋‹ค.

 

(3) ๊ตฌ์กฐ์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ 3๊ฐ€์ง€ ๊ธฐ๋ณธ ๊ตฌ์กฐ

[1] ์ˆœ์ฐจ ๊ตฌ์กฐ (Sequential Structure)

 - ์ˆœ์ฐจ ๊ตฌ์กฐ๋Š” ํ”„๋กœ๊ทธ๋žจ์—์„œ ๋ช…๋ น์–ด๋“ค์ด ์œ„์—์„œ ์•„๋ž˜๋กœ ์ฐจ๋ก€๋Œ€๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 - ์ฝ”๋“œ์—์„œ ์ œ์–ด ๊ตฌ์กฐ๊ฐ€ ์—†์„ ๋•Œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰์ด ๋œ๋‹ค.

[2] ์„ ํƒ ๊ตฌ์กฐ (Selection Structure)

 - (์ œ์–ด๊ตฌ์กฐ) ์„ ํƒ ๊ตฌ์กฐ๋Š” ์กฐ๊ฑด์— ๋”ฐ๋ผ ์‹คํ–‰ ํ๋ฆ„์„ ๋‹ค๋ฅด๊ฒŒ ๋งŒ๋“œ๋Š” ์ œ์–ด ๊ตฌ์กฐ์ด๋‹ค.

 - ์กฐ๊ฑด๋ฌธ์„ ์ด์šฉํ•ด ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ ํŠน์ • ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฑฐ๋‚˜ ๊ทธ ์™ธ์˜ ๊ฒฝ์šฐ ๋‹ค๋ฅธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.

 - ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ํŒŒ์ด์ฌ์— if / else / elif ์˜ˆ์•ฝ์–ด๊ฐ€ ์กด์žฌํ•œ๋‹ค.

[3] ๋ฐ˜๋ณต ๊ตฌ์กฐ (Repetition Structure)

 - (์ œ์–ด๊ตฌ์กฐ) ๋ฐ˜๋ณต ๊ตฌ์กฐ๋Š” ์–ด๋–ค ์กฐ๊ฑด์„ ๋งŒ์กฑํ•  ๋•Œ๊นŒ์ง€ ๋™์ผํ•œ ์ฝ”๋“œ๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์‹คํ–‰ํ•˜๋Š” ๊ตฌ์กฐ์ด๋‹ค.

 - ๋ฐ˜๋ณต๋ฌธ์„ ์ด์šฉํ•ด ์ฝ”๋“œ์˜ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ํšจ์œจ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ๋‹ค.

 - ๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ํŒŒ์ด์ฌ์— for๋ฌธ๊ณผ while๋ฌธ์ด ์žˆ๋‹ค.

 


2. ์ˆœ์ฐจ ๊ตฌ์กฐ

 - ์‹คํ–‰์˜ ํ๋ฆ„์„ ์ฃผ์–ด์ง€๋Š” ๋ช…๋ น์˜ ์œ„์น˜์  ํ๋ฆ„์— ๋”ฐ๋ผ ์ˆ˜ํ–‰ํ•˜๋Š” ๊ตฌ์กฐ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

 - ๋ช…๋ น ๋ผ์ธ ์œ„์—์„œ ์•„๋ž˜๋กœ ํ๋ฅด๋Š” ๊ฐ€์žฅ ์ง๊ด€์ ์ธ ๊ตฌ์กฐ

 - ์ผ๋‹จ ์ฒซ ๋‹จ๊ณ„๋ฅผ ์‹œ์ž‘ํ•˜๋ฉด ๋งˆ์ง€๋ง‰ ๋‹จ๊ฒŒ๊นŒ์ง€ ์ˆ˜ํ–‰

 - ์ด๋Ÿฌํ•œ ํ˜„์‹ค์—์„œ ์‚ฌ์šฉ๋˜๋Š” ์ˆœ์ฐจ ๊ตฌ์กฐ๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ๋…น์ธ๊ฒƒ์ด๋‹ค.

 

(1) ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์—๋Ÿฌ

 - ์ˆœ์ฐจ์ ์œผ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋‹ค ๋ณด๋ฉด, ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 - ์„ค๊ณ„ ๋ฏธ์ˆ™, ๊ฒฐํ•จ ๋˜๋Š” ๋ฌธ๋ฒ• ์˜ค๋ฅ˜๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์˜๋„ํ•œ ๋Œ€๋กœ ๊ฒฐ๊ณผ๋ฅผ ์ƒ์„ฑํ•˜์ง€ ๋ชปํ•˜๋Š” ๋ฌธ์ œ๋ฅผ ์˜๋ฏธํ•œ๋‹ค.

[1] ๊ตฌ๋ฌธ ์˜ค๋ฅ˜(syntax error)

 - ๋ฌธ๋ฒ• ์ฒด๊ณ„์— ์ ํ•ฉํ•˜์ง€ ์•Š๋Š” ๋ช…๋ น๋ฌธ ์ž…๋ ฅ ์‹œ ๋ฐœ์ƒ

[2] ์‹คํ–‰ ์˜ค๋ฅ˜(runtime error)

 - ๋…ผ๋ฆฌ์ ์œผ๋กœ ์‹คํ–‰ ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ช…๋ น๋ฌธ ์ž‘์„ฑ ์‹œ ๋ฐœ์ƒ

[3] ์˜๋ฏธ ์˜ค๋ฅ˜(semantic error)

 - ์˜๋ฏธ์ ์œผ๋กœ ์ž˜๋ชป ํ•ด์„๋˜๋Š” ๋ช…๋ น๋ฌธ ์ž‘์„ฑ ์‹œ ๋ฐœ์ƒ

 

(2) ํŒŒ์ด์ฌ ๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ณ€ํ™˜

 - ํŒŒ์ด์ฌ์—๋Š” ์ž๋ฃŒํ˜•(๋ฐ์ดํ„ฐ ํƒ€์ž…)์„ ์ž…๋ ฅํ•˜์ง€ ์•Š๊ณ  ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด๋„ ๋‚ด๋ถ€์ ์œผ๋กœ ์ž๋ฃŒํ˜•์„ ๋„ฃ์–ด์„œ ์ค€๋‹ค.

 - ์ฆ‰, ํŒŒ์ด์ฌ์—๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…์ด ์—†๋Š”๊ฒƒ์ด ์•„๋‹Œ ์ƒ๋žต์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด๋‹ค.

 - ์‰ฝ๊ฒŒ ๋งํ•ด, input() ์˜ ๋ฆฌํ„ด ํƒ€์ž…์€ str ๋ฌธ์ž์—ด ์ด๋ฉฐ, ์ด ๊ฐ’์„ int ์ •์ˆ˜์™€ ๋”ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒƒ์ด๋‹ค.

 - ํŒŒ์ด์ฌ์—์„œ๋Š” int(), float() ํ•จ์ˆ˜๋ฅผ ํ™œ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ ํƒ€์ž…์„ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

# ์ž˜๋ชป๋œ ์ฝ”๋“œ
number = input() # ์ž…๋ ฅ๊ฐ’์˜ ๋ฆฌํ„ด์€ ๋ฐ˜๋“œ์‹œ string(๋ฌธ์ž์—ด) ํ˜•์‹์œผ๋กœ ๋„˜์–ด์˜จ๋‹ค.
print(number + 1) # ๋Ÿฐํƒ€์ž„ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์ด์œ  : str๊ณผ ์ˆซ์ž๋Š” ๋”ํ• ์ˆ˜์—†์Œ.
# ์˜ฌ๋ฐ”๋ฅธ ์ฝ”๋“œ
number = input()
number = int(number)
print(number + 1) # ๊ฒฐ๊ณผ๊ฐ’์€ ๋”ํ•œ ์ •์ˆ˜๊ฐ’์ด ๋‚˜์˜ด. ๋ฌธ์ œ๋ฐœ์ƒ x
# ๊ทธ ์™ธ ์‚ฌ์šฉ๋ฒ• 1
number = int(input())
print(number + 1)
# ๊ทธ ์™ธ ์‚ฌ์šฉ๋ฒ• 2
number = input()
print(int(number) + 1)
# ๋“ฑ.. ๋‹ค์–‘ํ•œ ์‚ฌ์šฉ๋ฒ•์ด ์žˆ์Œ.