๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Study/CODE 3๊ธฐ [Jump to python]

[ ๋น„๋น„๋น… ] Python Study #4

by ๋„์†Œ์—ฐ 2024. 4. 1.

๐Ÿ€ํŒ€์›: ๊น€๋ฏผ์„œ, ๋„์†Œ์—ฐ, ๋ฐฐ๋™์ค€, ์ •์ˆ˜์•„, ์ž„ํšจ์‹ 

๐Ÿ€๊ธฐ๊ฐ„: 3/26(ํ™”) ~ 4/1(์›”)    # 4์ฃผ์ฐจ 

๐Ÿ€ํ•™์Šต ๋ฒ”์œ„: 05-1 ํด๋ž˜์Šค 05-2 ๋ชจ๋“ˆ 05-3 ํŒจํ‚ค์ง€ 05-4 ์˜ˆ์™ธ ์ฒ˜๋ฆฌ 05-5 ๋‚ด์žฅ ํ•จ์ˆ˜ 05-6 ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ 05-7 ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

๐Ÿ’•๋ชฉ์ฐจ

05-1. ํด๋ž˜์Šค
05-2. ๋ชจ๋“ˆ

05-3. ํŒจํ‚ค์ง€
05-4. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ
05-5. ๋‚ด์žฅ ํ•จ์ˆ˜
05-6. ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
05-7. ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

1. ํด๋ž˜์Šค(์ž‘์„ฑ์ž: ๋ฐฐ๋™์ค€)

1-1. ๊ฐ์ฒด์™€ ์ธ์Šคํ„ฐ์Šค

1-2. ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž

ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์— setdata ๋ฉ”์„œ๋“œ๋ฅผ ์ˆ˜ํ–‰ํ•˜์ง€ ์•Š๊ณ  ๋‹ค๋ฅธ ๋ฉ”์„œ๋“œ๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜๋ฉด

'AttributeError: '[์ฃผ์–ด์ง„ํด๋ž˜์Šค]' object has no attribute '[๋งค๊ฐœ๋ณ€์ˆ˜]'' ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๊ฐ์ฒด์— ์ดˆ๊ธฐ๊ฐ’์„ ์„ค์ •ํ•ด์•ผ ํ•  ํ•„์š”๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ ์ดˆ๊นƒ๊ฐ’์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ƒ์„ฑ์ž๋ฅผ

๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์•ˆ์ „ํ•˜๋‹ค. ์ƒ์„ฑ์ž(constructor)๋Š” ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋  ๋•Œ ์ž๋™์œผ๋กœ ํ˜ธ์ถœ๋˜๋Š” ๋ฉ”์„œ๋“œ์ด๋‹ค.

ํŒŒ์ด์ฌ ๋ฉ”์„œ๋“œ ๋ช…์„ __init__๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ด ๋ฉ”์„œ๋“œ๋Š” ์ƒ์„ฑ์ž๊ฐ€ ๋œ๋‹ค.

์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค์˜ ์˜ˆ
a = FourCal()์„ ์ˆ˜ํ–‰ํ•  ๋•Œ ์ƒ์„ฑ์ž__init__๊ฐ€ ํ˜ธ์ถœ๋˜์–ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค. ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜ first์™€ second์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด ์ „๋‹ฌ๋˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
first์™€ second์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์„ค์ •ํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ํ•ด๊ฒฐ๋œ๋‹ค.

 

1-3. ํด๋ž˜์Šค์˜ ์ƒ์†

ํด๋ž˜์Šค์˜ ์ƒ์†(inheritance)์€ ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค ๋•Œ ๋‹ค๋ฅธ ํด๋ž˜์Šค์˜ ๊ธฐ๋Šฅ์„ ๋ฌผ๋ ค๋ฐ›์„ ์ˆ˜ ์žˆ๊ฒŒ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋งํ•œ๋‹ค.

class ํด๋ž˜์Šค_์ด๋ฆ„(์ƒ์†ํ• _ํด๋ž˜์Šค_์ด๋ฆ„)  ์œผ๋กœ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

 

1-4. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

๋ถ€๋ชจ ํด๋ž˜์Šค(์ƒ์†ํ•œ ํด๋ž˜์Šค)์— ์žˆ๋Š” ๋ฉ”์„œ๋“œ๋ฅผ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ๋‹ค์‹œ ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(method overriding)์ด๋ผ๊ณ  ํ•œ๋‹ค. ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜๋ฉด ๋ถ€๋ชจ ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ ๋Œ€์‹  ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•œ ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ๋‹ค.

๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์˜ ์˜ˆ์‹œ

1-5. ํด๋ž˜์Šค๋ณ€์ˆ˜

ํด๋ž˜์Šค์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๊ฐ€ ํด๋ž˜์Šค๋ณ€์ˆ˜์ด๋‹ค. ํด๋ž˜์Šค๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๋ณ€์ˆ˜์™€ ๋‹ฌ๋ฆฌ ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ๋ชจ๋“  ๊ฐ์ฒด์— ๊ณต์œ ๋œ๋‹ค๋Š” ํŠน์ง•์ด ์žˆ๋‹ค. ํด๋ž˜์Šค_์ด๋ฆ„.ํด๋ž˜์Šค๋ณ€์ˆ˜ ๋กœ ์ž‘์„ฑํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค.

 

if) ํด๋ž˜์Šค๋ณ€์ˆ˜์™€ ๋™์ผํ•œ ์ด๋ฆ„์˜ ๊ฐ์ฒด๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋ฉด?

๊ฐ์ฒด๋ณ€์ˆ˜๋Š” ํด๋ž˜์Šค๋ณ€์ˆ˜์™€ ๋™์ผํ•œ ์ด๋ฆ„์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ๋™์ผํ•œ ์ด๋ฆ„์˜ ๊ฐ์ฒด๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๋”๋ผ๋„ ํด๋ž˜์Šค๋ณ€์ˆ˜์˜ ๊ฐ’์€ ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค.

 

 

์ž‘์„ฑ์ž : ๋„์†Œ์—ฐ

05-2 ๋ชจ๋“ˆ

๋ชจ๋“ˆ : ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜ ๋˜๋Š” ํด๋ž˜์Šค๋ฅผ ๋ชจ์•„๋†“์€ ํŒŒ์ด์ฌ ํŒŒ์ผ

๋ชจ๋“ˆ ๋งŒ๋“ค๊ธฐ

#mod1.py
def add(a,b):
	return a+b

def sub(a,b):
	return a-b

์œ„์™€ ๊ฐ™์ด ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ•œ๋‹ค.(์—ฌ๊ธฐ์„  C:\doit ๋””๋ ‰ํ„ฐ๋ฆฌ)

๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๋ฐ˜๋“œ์‹œ mod1.py๋ฅผ ์ €์žฅํ•œ C:\doit ๋””๋ ‰ํ„ฐ๋ฆฌ๋กœ ์ด๋™ํ•œ ํ›„ ์˜ˆ์ œ๋ฅผ ์ง„ํ–‰ํ•ด์•ผํ•œ๋‹ค. ๊ทธ๋ž˜์•ผ ๋Œ€ํ™”ํ˜• ์ธํ„ฐํ”„๋ฆฌํ„ฐ์—์„œ mod1.py ๋ชจ๋“ˆ์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค. 

>>> import mod1
>>> print(mod1.add(3,4))
7
>>> print(mod1.sub(4,2))
2

*import๋Š” ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ์ด๋‚˜ ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์ €์žฅ๋œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“ˆ๋งŒ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. 

import์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

 import ๋ชจ๋“ˆ_์ด๋ฆ„
from ๋ชจ๋“ˆ_์ด๋ฆ„ import ๋ชจ๋“ˆ_ํ•จ์ˆ˜

→ ๋ชจ๋“ˆ ์ด๋ฆ„ ์—†์ด ํ•จ์ˆ˜ ์ด๋ฆ„๋งŒ ์“ฐ๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ

 

๋ชจ๋“ˆ ์ด๋ฆ„์„ ๋ถ™์ด์ง€ ์•Š๊ณ  ํ•จ์ˆ˜๋ฅผ ์“ฐ๊ณ  ์‹ถ๋‹ค๋ฉด? 

1๋ฒˆ์งธ ๋ฐฉ๋ฒ•

from ๋ชจ๋“ˆ_์ด๋ฆ„ import ๋ชจ๋“ˆ_ํ•จ์ˆ˜1, ๋ชจ๋“ˆ_ํ•จ์ˆ˜2

2๋ฒˆ์งธ ๋ฐฉ๋ฒ•

from ๋ชจ๋“ˆ_์ด๋ฆ„ import *

*๋ฌธ์ž๋Š” '๋ชจ๋“  ๊ฒƒ'์ด๋ผ๋Š” ๋œป์œผ๋กœ, ๋ชจ๋“ˆ์˜ ๋ชจ๋“  ํ•จ์ˆ˜๋ฅผ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•˜๊ฒ ๋‹ค๋Š” ๋œป์ด๋‹ค. 

 

if __name__=="__main__":

ํ•ด๋‹น ๊ตฌ๋ฌธ์ด ์‚ฌ์šฉ๋œ ํŒŒ์ด์ฌ ํŒŒ์ผ์„ ์ง์ ‘ ์‹คํ–‰ํ–ˆ์„ ๋•Œ๋งŒ ์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ฒ ๋‹ค ๋ผ๋Š” ์˜๋ฏธ

 

ํด๋ž˜์Šค๋‚˜ ๋ณ€์ˆ˜ ๋“ฑ์„ ํฌํ•จํ•œ ๋ชจ๋“ˆ

#mod2.py
PI = 3.141592

class Math:
	def solv(self,r):
		return PI*(r**2)
        
def add(a,b):
	return a+b
>>> a = mod2.Math()
>>> print(a.solv(2))
12.566368

>>> print(mod2.add(mod2.PI,4.4))
7.541592

 

๋‹ค๋ฅธ ํŒŒ์ผ์—์„œ ๋ชจ๋“ˆ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

๋‹ค๋ฅธ ํŒŒ์ด์ฌ ํŒŒ์ผ์—์„œ๋„ import ๋ชจ๋“ˆ_์ด๋ฆ„ ์œผ๋กœ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ƒˆ๋กœ๋งŒ๋“  ํŒŒ์ผ์™€ ๋ถˆ๋Ÿฌ์˜ค๋ ค๋Š” ํŒŒ์ผ์ด ๋™์ผํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ์–ด์•ผํ•œ๋‹ค. 

 

๋‹ค๋ฅธ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์˜ค๋Š” ๋ฐฉ๋ฒ•

sys ๋ชจ๋“ˆ : ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ํ™•์ธ 

sys.path : ํŒŒ์ด์ฌ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ชฉ๋ก ํ™•์ธ

PYTHONPATH : ๋””๋ ‰ํ„ฐ๋ฆฌ ์ด๋™์ด๋‚˜ ๋ณ„๋„์˜ ๋ชจ๋“ˆ ์ถ”๊ฐ€ ์ž‘์—… ์—†์ด ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅ๋œ ๋ชจ๋“ˆ์„ ๋ถˆ๋Ÿฌ์™€ ์‚ฌ์šฉ ๊ฐ€๋Šฅ


05-3 ํŒจํ‚ค์ง€

ํŒจํ‚ค์ง€ : ๊ด€๋ จ์žˆ๋Š” ๋ชจ๋“ˆ์˜ ์ง‘ํ•ฉ

์žฅ์  

1. ๊ณต๋™ ์ž‘์—…์ด๋‚˜ ์œ ์ง€ ๋ณด์ˆ˜ ๋“ฑ ์—ฌ๋Ÿฌ ๋ฉด์—์„œ ์œ ๋ฆฌํ•˜๋‹ค.

2. ๋‹ค๋ฅธ ๋ชจ๋“ˆ๊ณผ ์ด๋ฆ„์ด ๊ฒน์น˜๋”๋ผ๋„ ๋” ์•ˆ์ „ํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํŒจํ‚ค์ง€ ๋งŒ๋“ค๊ธฐ

1. ๋””๋ ‰ํ„ฐ๋ฆฌ ๋ฐ‘์— ์„œ๋ธŒ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ƒ์„ฑํ•˜๊ณ  .py ํŒŒ์ผ๋“ค์„ ๋งŒ๋“ ๋‹ค. 

2. ๊ฐ ๋””๋ ‰ํ„ฐ๋ฆฌ์— __init__.py ํŒŒ์ผ์„ ๋งŒ๋“ค์–ด ๋†“๊ธฐ๋งŒ ํ•˜๊ณ  ๋‚ด์šฉ์€ ์ผ๋‹จ ๋น„์›Œ ๋‘”๋‹ค.

3. echo.py ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค. 

def echo_test():
	print("echo")

4. render.py ํŒŒ์ผ์˜ ๋‚ด์šฉ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•œ๋‹ค.

def render_test():
	print("render")

5. ๊ธฐ์กด์— ๋งŒ๋“  ํŒจํ‚ค์ง€๋ฅผ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋„๋ก ๋ช…๋ น ํ”„๋กฌํ”„ํŠธ ์ฐฝ์—์„œ set ๋ช…๋ น์–ด์†Œ PYTHONPATH ํ™˜๊ฒฝ ๋ณ€์ˆ˜์— ์ €์žฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ๋ฅผ ์ถ”๊ฐ€ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŒŒ์ด์ฌ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

C:\ set PYTHONPATH=C:/doit #C:/doit์€ ์ €์žฅํ•œ ๋””๋ ‰ํ„ฐ๋ฆฌ
C:\ python
>>>

 

ํŒจํ‚ค์ง€ ์•ˆ์˜ ํ•จ์ˆ˜ ์‹คํ–‰ํ•˜๊ธฐ

1๋ฒˆ์งธ ๋ฐฉ๋ฒ• : echo ๋ชจ๋“ˆ์„ import ํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

2๋ฒˆ์งธ ๋ฐฉ๋ฒ• : echo ๋ชจ๋“ˆ์ด ์žˆ๋Š” ๋””๋ ‰ํ„ฐ๋ฆฌ๊นŒ์ง€๋ฅผ from...importํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

(์•ž์—์„œ importํ•œ ๋ชจ๋“ˆ ๋•Œ๋ฌธ์— ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋ฅผ ๋‹ค์‹œ ์‹œ์ž‘ํ•œ ํ›„ ์†Œ์Šค๋ฅผ ์ž…๋ ฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค.)

3๋ฒˆ์งธ ๋ฐฉ๋ฒ• : echo ๋ชจ๋“ˆ์˜ echo_test ํ•จ์ˆ˜๋ฅผ ์ง์ ‘ importํ•˜์—ฌ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•

 

__init__.py ์˜ ์šฉ๋„

__init__.py ํŒŒ์ผ์€ ํ•ด๋‹น ๋””๋ ‰ํ„ฐ๋ฆฌ๊ฐ€ ํŒจํ‚ค์ง€์˜ ์ผ๋ถ€์ž„์„ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•œ๋‹ค. 

โ–  ํŒจํ‚ค์ง€ ๋ณ€์ˆ˜ ๋ฐ ํ•จ์ˆ˜ ์ •์˜

VERSION = 3.5

def print_version_info():
	print(f"The version of this game is {VERSION}."
>>> import game 
>>> print(game.VERSION)
3.5
>>> game.print_version_info()
The version of this game is 3.5

โ–  ํŒจํ‚ค์ง€ ๋‚ด ๋ชจ๋“ˆ์„ ๋ฏธ๋ฆฌ import

__init__.py ํŒŒ์ผ์— ํŒจํ‚ค์ง€ ๋‚ด์˜ ๋‹ค๋ฅธ ๋ชจ๋“ˆ์„ ๋ฏธ๋ฆฌ importํ•˜์—ฌ ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ์—์„œ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•œ๋‹ค. 

from.graphic.render import render_test

VERSION = 3.5

def print_version_info():
	print(f"The version of this game is {VERSION}."
>>> import game
>>> game.render_test()
render

โ–  ํŒจํ‚ค์ง€ ์ดˆ๊ธฐํ™”

__init__.py ํŒŒ์ผ์— ํŒจํ‚ค์ง€๋ฅผ ์ฒ˜์Œ ๋ถˆ๋Ÿฌ์˜ฌ ๋•Œ ์‹คํ–‰๋˜์–ด์•ผ ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

๋‹จ, ์ดˆ๊ธฐํ™” ์ฝ”๋“œ๋Š” ํ•œ ๋ฒˆ ์‹คํ–‰๋œ ํ›„์—๋Š” ๋‹ค์‹œ import๋ฅผ ์ˆ˜ํ–‰ํ•˜๋”๋ผ๋„ ์‹คํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. 

from.graphic.render import render_test

VERSION = 3.5

def print_version_info():
	print(f"The version of this game is {VERSION}."
    
print("Initializing game...")
>>> import game
Initializing game...
>>>

 

__all__

์„œ๋ธŒ ๋””๋ ‰ํ„ฐ๋ฆฌ์—์„œ *์„ ์‚ฌ์šฉํ•˜์—ฌ import ํ•  ๊ฒฝ์šฐ, ์ด๊ณณ์— ์ •์˜๋œ ํŠน์ • ๋ชจ๋“ˆ๋งŒ importํ•œ๋‹ค.

__all__ = ['echo']
>>> form game.sound import * 
Initializing game...
>>> echo.echo_test()
echo

 

relative ํŒจํ‚ค์ง€

๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ๋ชจ๋“ˆ์—์„œ ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ํŠน์ • ๋ชจ๋“ˆ์„ ์‚ฌ์šฉํ•˜๊ณ  ์‹ถ์„ ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

from game.sound.echo import echo_test
def render_test():
	print("render")
	echo_test()

์ „์ฒด ๊ฒฝ๋กœ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ import ํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ๋‹ค์Œ๊ณผ ๊ฐ™์ด relativeํ•˜๊ฒŒ importํ•˜๋Š” ๊ฒƒ๋„ ๊ฐ€๋Šฅํ•˜๋‹ค. 

from ..sound.echo import echo_test

def render_test():
	print("render")
	echo_test()
์ ‘๊ทผ์ž              ์„ค๋ช…
       ..      ๋ถ€๋ชจ ๋””๋ ‰ํ„ฐ๋ฆฌ
       . ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ

05-4 ์˜ˆ์™ธ ์ฒ˜๋ฆฌ

์˜ค๋ฅ˜๋Š” ์–ธ์ œ ๋ฐœ์ƒํ•˜๋Š”๊ฐ€?

1. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ํŒŒ์ผ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ์‹œ๋„ํ–ˆ์„ ๋•Œ

2. 0์œผ๋กœ ๋‹ค๋ฅธ ์ˆซ์ž๋ฅผ ๋‚˜๋ˆ„๋Š” ๊ฒฝ์šฐ

3. ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์ธ๋ฑ์Šค ๊ฐ’์„ ์ง€์ •ํ•˜๋Š” ๊ฒฝ์šฐ

4. ๊ธฐํƒ€ ๋“ฑ๋“ฑ

 

์˜ค๋ฅ˜ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ•

โ–  try-except ๋ฌธ

try:
	...
except [๋ฐœ์ƒ์˜ค๋ฅ˜ [as ์˜ค๋ฅ˜๋ณ€์ˆ˜]]:
	...

try ๋ธ”๋ก ์ˆ˜ํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด except ๋ธ”๋ก์ด ์ˆ˜ํ–‰๋œ๋‹ค. ํ•˜์ง€๋งŒ try ๋ธ”๋ก์—์„œ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด except ๋ธ”๋ก์€ ์ˆ˜ํ–‰๋˜์ง€ ์•Š๋Š”๋‹ค. 

1. try-except ๋งŒ ์“ฐ๋Š” ๋ฐฉ๋ฒ•

try:
	...
except:
	...

*์ด ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ฅ˜์˜ ์ข…๋ฅ˜์— ์ƒ๊ด€์—†์ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด except ๋ธ”๋ก์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.

2. ๋ฐœ์ƒ ์˜ค๋ฅ˜๋งŒ ํฌํ•จํ•œ except ๋ฌธ

try:
	...
except ๋ฐœ์ƒ์˜ค๋ฅ˜:
	...

*์ด ๊ฒฝ์šฐ์—๋Š” ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ์„ ๋•Œ except๋ฌธ์— ๋ฏธ๋ฆฌ ์ •ํ•ด ๋†“์€ ์˜ค๋ฅ˜์™€ ๋™์ผํ•œ ์˜ค๋ฅ˜์ผ ๊ฒฝ์šฐ์—๋งŒ except ๋ธ”๋ก์„ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค. 

3. ๋ฐœ์ƒ ์˜ค๋ฅ˜์™€ ์˜ค๋ฅ˜ ๋ณ€์ˆ˜ ๊นŒ์ง€ ํฌํ•จํ•œ except๋ฌธ\

try:
	...
except ๋ฐœ์ƒ์˜ค๋ฅ˜ as ์˜ค๋ฅ˜๋ณ€์ˆ˜:
	...

 

โ–  try-finally ๋ฌธ

try ๋ฌธ ์ˆ˜ํ–‰ ๋„์ค‘ ์˜ˆ์™ธ ๋ฐœ์ƒ ์—ฌ๋ถ€์— ์ƒ๊ด€์—†์ด ํ•ญ์ƒ ์ˆ˜ํ–‰๋œ๋‹ค. ๋ณดํ†ต finally ์ ˆ์€ ์‚ฌ์šฉํ•œ ๋ฆฌ์†Œ์Šค๋ฅผ close ํ•ด์•ผ ํ•  ๋•Œ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค. 

try:
	f = open('foo.txt', 'w')
    (...์ƒ๋žต...)

finally:
	f.close()

 

์—ฌ๋Ÿฌ ๊ฐœ์˜ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌํ•˜๊ธฐ

try:
	...
except ๋ฐœ์ƒ์˜ค๋ฅ˜1:
	...
except ๋ฐœ์ƒ์˜ค๋ฅ˜2:
	...

2๊ฐœ ์ด์ƒ์˜ ์˜ค๋ฅ˜๋ฅผ ๋™์ผํ•˜๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•จ๊ป˜ ๋ฌถ์–ด ์ฒ˜๋ฆฌํ•˜๋ฉด ๋œ๋‹ค. 

โ–  try-else ๋ฌธ

try:
	...
except [๋ฐœ์ƒ์˜ค๋ฅ˜ [as ์˜ค๋ฅ˜๋ณ€์ˆ˜]]:
	...
else:
	...

try๋ฌธ ์ˆ˜ํ–‰ ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด except์ ˆ, ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š์œผ๋ฉด else์ ˆ์ด ์ˆ˜ํ–‰๋œ๋‹ค.

 

์˜ค๋ฅ˜ ํšŒํ”ผํ•˜๊ธฐ

try๋ฌธ ์•ˆ์—์„œ FileNotFoundError๊ฐ€ ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ, pass๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ฅ˜๋ฅผ ๊ทธ๋ƒฅ ํšŒํ”ผํ•˜๋„๋ก ํ•œ๋‹ค.

 

์˜ค๋ฅ˜ ์ผ๋ถ€๋Ÿฌ ๋ฐœ์ƒ์‹œํ‚ค๊ธฐ

raise ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด ์˜ค๋ฅ˜๋ฅผ ๊ฐ•์ œ๋กœ ๋ฐœ์ƒ์‹œํ‚จ๋‹ค.

class Bird:
	def fly(self):
		raise NotImplementedError

 

์˜ˆ์™ธ ๋งŒ๋“ค๊ธฐ 
1๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ํŒŒ์ด์ฌ ๋‚ด์žฅ ํด๋ž˜์Šค์ธ Exception ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜์—ฌ ๋งŒ๋“ ๋‹ค. 

class MyError(Exception):
	pass

2๋ฒˆ์งธ ๋ฐฉ๋ฒ• : ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ๊ธฐ๋ฒ• ์‚ฌ์šฉ

 

 

์ž‘์„ฑ์ž: ๊น€๋ฏผ์„œ

05-5 ๋‚ด์žฅ ํ•จ์ˆ˜

-์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์„ ์œ„์ฃผ๋กœ.

1.abs

abs(x)๋Š” ์–ด๋–ค ์ˆซ์ž๋ฅผ ์ž…๋ ฅ๋ฐ›์•˜์„ ๋•Œ ๊ทธ ์ˆซ์ž์˜ ์ ˆ๋Œ“๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

2.all

all(x)๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ x๋ฅผ ์ž…๋ ฅ๊ฐ’์œผ๋กœ ๋ฐ›์œผ๋ฉฐ ์ด x์˜ ์š”์†Œ๊ฐ€ ๋ชจ๋‘ ์ฐธ์ด๋ฉด True, ๊ฑฐ์ง“์ด ํ•˜๋‚˜๋ผ๋„ ์žˆ์œผ๋ฉด False๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

3.any

any(x)๋Š” ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ x๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ x์˜ ์š”์†Œ ์ค‘ ํ•˜๋‚˜๋ผ๋„ ์ฐธ์ด ์žˆ์œผ๋ฉด True๋ฅผ ๋ฆฌํ„ดํ•˜๊ณ  x๊ฐ€ ๋ชจ๋‘ ๊ฑฐ์ง“์ผ ๋•Œ๋งŒ False๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค. ์ฆ‰, all(x)์˜ ๋ฐ˜๋Œ€๋กœ ์ž‘๋™ํ•œ๋‹ค.

 

4.divmod

divmod(a, b)๋Š” 2๊ฐœ์˜ ์ˆซ์ž a, b๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›๋Š”๋‹ค. ๊ทธ๋ฆฌ๊ณ  a๋ฅผ b๋กœ ๋‚˜๋ˆˆ ๋ชซ๊ณผ ๋‚˜๋จธ์ง€๋ฅผ ํŠœํ”Œ๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

 

5.enumerate

enumerate๋Š” ‘์—ด๊ฑฐํ•˜๋‹ค’๋ผ๋Š” ๋œป์ด๋‹ค. ์ด ํ•จ์ˆ˜๋Š” ์ˆœ์„œ๊ฐ€ ์žˆ๋Š” ๋ฐ์ดํ„ฐ(๋ฆฌ์ŠคํŠธ, ํŠœํ”Œ, ๋ฌธ์ž์—ด)๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ธ๋ฑ์Šค ๊ฐ’์„ ํฌํ•จํ•˜๋Š” enumerate ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

6.filter

filter๋ž€ ‘๋ฌด์—‡์ธ๊ฐ€๋ฅผ ๊ฑธ๋Ÿฌ ๋‚ธ๋‹ค’๋ผ๋Š” ๋œป์œผ๋กœ, filter ํ•จ์ˆ˜๋„ ์ด์™€ ๋น„์Šทํ•œ ๊ธฐ๋Šฅ์„ ํ•œ๋‹ค.

7.id

id(object)๋Š” ๊ฐ์ฒด๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ฐ์ฒด์˜ ๊ณ ์œ  ์ฃผ์†Ÿ๊ฐ’(๋ ˆํผ๋Ÿฐ์Šค)์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

 

8.input

input([prompt])๋Š” ์‚ฌ์šฉ์ž ์ž…๋ ฅ์„ ๋ฐ›๋Š” ํ•จ์ˆ˜์ด๋‹ค. ์ž…๋ ฅ ์ธ์ˆ˜๋กœ ๋ฌธ์ž์—ด์„ ์ „๋‹ฌํ•˜๋ฉด ๊ทธ ๋ฌธ์ž์—ด์€ ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋œ๋‹ค.

 

9.isinstance

isinstance(object, class) ํ•จ์ˆ˜๋Š” ์ฒซ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ๊ฐ์ฒด, ๋‘ ๋ฒˆ์งธ ์ธ์ˆ˜๋กœ ํด๋ž˜์Šค๋ฅผ ๋ฐ›๋Š”๋‹ค. ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ๊ฐ์ฒด๊ฐ€ ๊ทธ ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค์ธ์ง€๋ฅผ ํŒ๋‹จํ•˜์—ฌ ์ฐธ์ด๋ฉด True, ๊ฑฐ์ง“์ด๋ฉด False๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

>>> class Person: pass
...
>>> a = Person()
>>> isinstance(a, Person)
True

์œ„ ์˜ˆ๋Š” a ๊ฐ์ฒด๊ฐ€ Person ํด๋ž˜์Šค์— ์˜ํ•ด ์ƒ์„ฑ๋œ ์ธ์Šคํ„ด์Šค๋ผ๋Š” ๊ฒƒ์„ ํ™•์ธ์‹œ์ผœ ์ค€๋‹ค.

>>> b = 3
>>> isinstance(b, Person)
False

b๋Š” Person ํด๋ž˜์Šค๋กœ ๋งŒ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ์•„๋‹ˆ๋ฏ€๋กœ False๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.

10.list

list(iterable)์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค์–ด ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> list("python")
['p', 'y', 't', 'h', 'o', 'n']
>>> list((1,2,3))
[1, 2, 3]

11.max

max(iterable)์€ ์ธ์ˆ˜๋กœ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ์ตœ๋Œ“๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> max([1, 2, 3])
3
>>> max("python")
'y'

12.min

min(iterable)์€ max ํ•จ์ˆ˜์™€ ๋ฐ˜๋Œ€๋กœ, ์ธ์ˆ˜๋กœ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ๊ทธ ์ตœ์†Ÿ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> min([1, 2, 3])
1
>>> min("python")
'h'

13.str

str(object)๋Š” ๋ฌธ์ž์—ด ํ˜•ํƒœ๋กœ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> str(3)
'3'
>>> str('hi')
'hi'

14.sum

sum(iterable)์€ ์ž…๋ ฅ ๋ฐ์ดํ„ฐ์˜ ํ•ฉ์„ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> sum([1,2,3])
6
>>> sum((4,5,6))
15

15.tuple

tuple(iterable)์€ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๋ฐ์ดํ„ฐ๋ฅผ ํŠœํ”Œ๋กœ ๋ฐ”๊พธ์–ด ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜์ด๋‹ค. ๋งŒ์•ฝ ์ž…๋ ฅ์ด ํŠœํ”Œ์ธ ๊ฒฝ์šฐ์—๋Š” ๊ทธ๋Œ€๋กœ ๋ฆฌํ„ดํ•œ๋‹ค.

>>> tuple("abc")
('a', 'b', 'c')
>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple((1, 2, 3))
(1, 2, 3)

16.type

type(object)๋Š” ์ž…๋ ฅ๊ฐ’์˜ ์ž๋ฃŒํ˜•์ด ๋ฌด์—‡์ธ์ง€ ์•Œ๋ ค ์ฃผ๋Š” ํ•จ์ˆ˜์ด๋‹ค.

>>> type("abc")
<class 'str'>
>>> type([ ])
<class 'list'>
>>> type(open("test", 'w'))
<class '_io.TextIOWrapper'>

 

 

์ž‘์„ฑ์ž : ์ •์ˆ˜์•„

05-6 ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

 

โ–ถ ํ‘œ์ค€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€?

ํ‘œ์ค€๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ž€ ์œ ์šฉํ•œ ํ”„๋กœ๊ทธ๋žจ์„ ๋ชจ์•„๋†“์€ ๊ฒƒ์œผ๋กœ, ๋„์„œ๊ด€์ฒ˜๋Ÿผ ์›ํ•˜๋Š” ์ •๋ณด๋ฅผ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

โ–  datetime.date

- ์—ฐ, ์›”, ์ผ๋กœ ๋‚ ์งœ๋ฅผ ํ‘œํ˜„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜

์ด ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ๋‚ ์งœ์˜ ์ฐจ์ด๋ฅผ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.

 

โ–  time

1) time.time

: ํ˜„์žฌ ์‹œ๊ฐ„์„ ์‹ค์ˆ˜ ํ˜•ํƒœ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

2) time.localtime

: time.time()์ด ๋ฆฌํ„ดํ•œ ์‹ค์ˆซ๊ฐ’์„ ์‚ฌ์šฉํ•ด์„œ ์—ฐ, ์›”, ์ผ, ์‹œ ๋ถ„, ์ดˆ, ... ์˜ ํ˜•ํƒœ๋กœ ๋ฐ”๊พธ์–ด ์ฃผ๋Š” ํ•จ์ˆ˜

3) time.asctime

: time.localtime ๊ฐ€ ๋ฆฌํ„ด๋œ ํŠœํ”Œ ํ˜•ํƒœ์˜ ๊ฐ’์„ ์ธ์ˆ˜๋กœ ๋ฐ›์•„์„œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์•Œ์•„๋ณด๊ธฐ ์‰ฌ์šด ํ˜•ํƒœ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

4) time.ctime

: time.asctime(time.localtime(time.time()))์„ ๊ฐ„๋‹จํ•˜๊ฒŒ ๋‚˜ํƒ€๋‚ธ ๊ฒƒ

5) time.strftime

: ์‹œ๊ฐ„์— ๊ด€๊ณ„๋œ ๊ฒƒ์„ ์„ธ๋ฐ€ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ํฌ๋งท ์ฝ”๋“œ ์ œ๊ณต

ํฌ๋งท์ฝ”๋“œ์„ค๋ช…์˜ˆ

%a ์š”์ผ์˜ ์ค„์ž„๋ง Mon
%A ์š”์ผ Monday
%b ๋‹ฌ์˜ ์ค„์ž„๋ง Jan
%B ๋‹ฌ January
%c ๋‚ ์งœ์™€ ์‹œ๊ฐ„์„ ์ถœ๋ ฅํ•จ. Thu May 25 10:13:52 2023
%d ์ผ(day) [01,31]
%H ์‹œ๊ฐ„(hour): 24์‹œ๊ฐ„ ์ถœ๋ ฅ ํ˜•ํƒœ [00,23]
%I ์‹œ๊ฐ„(hour): 12์‹œ๊ฐ„ ์ถœ๋ ฅ ํ˜•ํƒœ [01,12]
%j 1๋…„ ์ค‘ ๋ˆ„์  ๋‚ ์งœ [001,366]
%m ๋‹ฌ [01,12]
%M ๋ถ„ [01,59]
%p AM or PM AM
%S ์ดˆ [00,59]
%U 1๋…„ ์ค‘ ๋ˆ„์  ์ฃผ(์ผ์š”์ผ ์‹œ์ž‘) [00,53]
%w ์ˆซ์ž๋กœ ๋œ ์š”์ผ [0(์ผ), 6(ํ† )]
%W 1๋…„ ์ค‘ ๋ˆ„์  ์ฃผ(์›”์š”์ผ ์‹œ์ž‘) [00,53]
%x ํ˜„์žฌ ์„ค์ •๋œ ์ง€์—ญ์— ๊ธฐ๋ฐ˜ํ•œ ๋‚ ์งœ ์ถœ๋ ฅ 05/25/23
%X ํ˜„์žฌ ์„ค์ •๋œ ์ง€์—ญ์— ๊ธฐ๋ฐ˜ํ•œ ์‹œ๊ฐ„ ์ถœ๋ ฅ 17:22:21
%Y ์—ฐ๋„ ์ถœ๋ ฅ 2023
%Z ์‹œ๊ฐ„๋Œ€ ์ถœ๋ ฅ ๋Œ€ํ•œ๋ฏผ๊ตญ ํ‘œ์ค€์‹œ
%% ๋ฌธ์ž % %
%y ์„ธ๊ธฐ ๋ถ€๋ถ„์„ ์ œ์™ธํ•œ ์—ฐ๋„ ์ถœ๋ ฅ 01

6) time.sleep

: ์ผ์ •ํ•œ ์‹œ๊ฐ„ ๊ฐ„๊ฒฉ์„ ๋‘๊ณ  ๋ฃจํ”„๋ฅผ ์‹คํ–‰

 

โ–   math.gcd

์ตœ๋Œ€ ๊ณต์•ฝ์ˆ˜(greatest common divisor)

โ–  math.lcm

์ตœ์†Œ ๊ณต๋ฐฐ์ˆ˜(least common multiple)

โ–  random

: ๋‚œ์ˆ˜๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ชจ๋“ˆ

# random_popํ•จ์ˆ˜ : ๋ฆฌ์ŠคํŠธ ์š”์†Œ ์ค‘์—์„œ ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๊บผ๋‚ธ ๋‹ค์Œ ๊ทธ ๊ฐ’์„ ๋ฆฌํ„ด

# random.choiceํ•จ์ˆ˜ : ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์€ ๋ฆฌ์ŠคํŠธ์—์„œ ๋ฌด์ž‘์œ„๋กœ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•˜์—ฌ ๋ฆฌํ„ด

# random.sampleํ•จ์ˆ˜ : ๋ฆฌ์ŠคํŠธ์˜ ํ•ญ๋ชฉ์„ ๋ฌด์ž‘์œ„๋กœ ์„ž์Œ

 

โ–  itertools.zip_longest

: ๊ฐ™์€ ๊ฐœ์ˆ˜์˜ ์ž๋ฃŒํ˜•์„ ๋ฌถ๋Š” ํŒŒ์ด์ฌ ๋‚ด์žฅ ํ•จ์ˆ˜์ธ zip ํ•จ์ˆ˜์™€ ๋˜‘๊ฐ™์ด ๋™์ž‘

์ด ๊ฒฝ์šฐ ํ•™์ƒ ์ˆ˜๊ฐ€ ๊ณผ์ž ์ˆ˜๋ณด๋‹ค ๋งŽ์œผ๋ฏ€๋กœ, ๊ณผ์ž ๊ฐœ์ˆ˜๋งŒํผ๋งŒ zip์œผ๋กœ ๋ฌถ๊ฒŒ ๋œ๋‹ค.

โ–   itertools.permutation

# itertools.permutation(iterable, r) : ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด ์ค‘์—์„œ r๊ฐœ๋ฅผ ์„ ํƒํ•œ ์ˆœ์—ด์„ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

 

โ–   itertools.combination

# itertools.combination(iterable, r) : ๋ฐ˜๋ณต ๊ฐ€๋Šฅ ๊ฐ์ฒด ์ค‘์—์„œ r๊ฐœ๋ฅผ ์„ ํƒํ•œ ์กฐํ•ฉ์„ ์ดํ„ฐ๋ ˆ์ดํ„ฐ๋กœ ๋ฆฌํ„ดํ•˜๋Š” ํ•จ์ˆ˜

 

โ–   funtools.reduce

# itertools.reduce(function, iterable) : ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณต ๊ฐ€๋Šฅํ•œ ๊ฐ์ฒด์˜ ์š”์†Œ์— ์ฐจ๋ก€๋Œ€๋กœ ๋ˆ„์  ์ ์šฉํ•˜์—ฌ ์ด ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ ๊ฐ’์œผ๋กœ ์ค„์ด๋Š” ํ•จ์ˆ˜

 

โ–   operator.itemgetter

: ์ฃผ๋กœ sorted์™€ ๊ฐ™์€ ํ•จ์ˆ˜์˜ key ๋งค๊ฐœ๋ณ€์ˆ˜์— ์ ์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋ชจ๋“ˆ

 

# sorted ํ•จ์ˆ˜์˜ key ๋งค๊ฐœ๋ณ€์ˆ˜์— itemgetter() ์ ์šฉ : ๋ฆฌ์ŠคํŠธ๋ฅผ ์›ํ•˜๋Š” ๊ธฐ์ค€์œผ๋กœ ์ •๋ ฌ ๊ฐ€๋Šฅ

 

โ–  shutil

: ํŒŒ์ผ์„ ๋ณต์‚ฌํ•˜๊ฑฐ๋‚˜ ์ด๋™ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ

 

โ–   glob

: ํŠน์ • ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ ์ด๋ฆ„ ๋ชจ๋‘๋ฅผ ์•Œ์•„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ

 

#glob(pathname) : ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์žˆ๋Š” ํŒŒ์ผ๋“ค์„ ๋ฆฌ์ŠคํŠธ๋กœ ๋งŒ๋“ค๊ธฐ

 

โ–   pickle

: ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋ฅผ ๊ทธ๋Œ€๋กœ ์œ ์ง€ํ•˜๋ฉด์„œ ํŒŒ์ผ์— ์ €์žฅํ•˜๊ณ  ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๋Š” ๋ชจ๋“ˆ

 

โ–   os

: ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋‚˜ ๋””๋ ‰ํ„ฐ๋ฆฌ, ํŒŒ์ผ ๋“ฑ์˜ OS ์ž์›์„ ์ œ์–ดํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด ์ฃผ๋Š” ๋ชจ๋“ˆ

 

# ๋‚ด ์‹œ์Šคํ…œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆซ๊ฐ’์„ ์•Œ๊ณ  ์‹ถ์„ ๋•Œ - os.environ

: ํ˜„์žฌ ์‹œ์Šคํ…œ์˜ ํ™˜๊ฒฝ ๋ณ€์ˆซ๊ฐ’์„ ๋ฆฌํ„ด

 

# ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜ ๋ณ€๊ฒฝํ•˜๊ธฐ - os.chdir

: ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์˜ ์œ„์น˜ ๋ณ€๊ฒฝ

 

# ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜ ๋Œ๋ ค๋ฐ›๊ธฐ - os.getcwd

: ํ˜„์žฌ ์ž์‹ ์˜ ๋””๋ ‰ํ„ฐ๋ฆฌ ์œ„์น˜ ๋ฆฌํ„ด

 

# ์‹œ์Šคํ…œ ๋ช…๋ น์–ด ํ˜ธ์ถœํ•˜๊ธฐ - os.system

: os.system("๋ช…๋ น์–ด") : ์‹œ์Šคํ…œ ์ž์ฒด์˜ ํ”„๋กœ๊ทธ๋žจ์ด๋‚˜ ๊ธฐํƒ€ ๋ช…๋ น์–ด๋ฅผ ํŒŒ์ด์ฌ์—์„œ ํ˜ธ์ถœ ๊ฐ€๋Šฅ

 

# ์‹คํ–‰ํ•œ ์‹œ์Šคํ…œ ๋ช…๋ น์–ด์˜ ๊ฒฐ๊ด๊ฐ’ ๋Œ๋ ค๋ฐ›๊ธฐ - os.popen

: ์‹œ์Šคํ…œ ๋ช…๋ น์–ด๋ฅผ ์‹คํ–‰ํ•œ ๊ฒฐ๊ด๊ฐ’์„ ์ฝ๊ธฐ ๋ชจ๋“œ ํ˜•ํƒœ์˜ ํŒŒ์ผ ๊ฐ์ฒด๋กœ ๋ฆฌํ„ด

 

โ–  zipfile

: ์—ฌ๋Ÿฌ ๊ฐœ์˜ ํŒŒ์ผ์„ zip ํ˜•์‹์œผ๋กœ ํ•ฉ์น˜๊ฑฐ๋‚˜ ์ด๋ฅผ ํ•ด์ œํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ

 

# ํŒŒ์ผ ํ•ฉ์น˜๊ธฐ : write() ํ•จ์ˆ˜

# ํŒŒ์ผ ํ•ด์ œํ•˜๊ธฐ : extreactall() ํ•จ์ˆ˜

# ํŠน์ • ํŒŒ์ผ๋งŒ ํ•ด์ œํ•˜๊ธฐ : extract() ํ•จ์ˆ˜

# ํŒŒ์ผ ์••์ถ•ํ•˜์—ฌ ๋ฌถ๊ธฐ : compression, compresslevel

compression ์••์ถ• ๋ฐฉ๋ฒ• ์••์ถ•๋ฅ  ์†๋„
1. ZIP_STORED ์••์ถ•ํ•˜์ง€ ์•Š์Œ - ๋น ๋ฆ„
2. ZIP_DEFLATED ์ผ๋ฐ˜์ ์ธ zip ์••์ถ• ๋‚ฎ์Œ ๋น ๋ฆ„
3. ZIP_BZIP2 bzip2 ์••์ถ• ๋†’์Œ ๋Š๋ฆผ
4. ZIP_LZMA lzma ์••์ถ• ๋†’์Œ ๋Š๋ฆผ

 

โ–   threading

: ํ•œ ํ”„๋กœ์„ธ์Šค ์•ˆ์—์„œ 2 ๊ฐ€์ง€ ๋˜๋Š” ๊ทธ ์ด์ƒ์˜ ์ผ์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•จ

 

โ–   tempfile

: ํŒŒ์ผ์„ ์ž„์‹œ๋กœ ๋งŒ๋“ค์–ด์„œ ์‚ฌ์šฉํ•  ๋•Œ ์œ ์šฉํ•œ ๋ชจ๋“ˆ

 

# ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ์ž„์‹œ ํŒŒ์ผ์˜ ์ด๋ฆ„์„ ๋ฌด์ž‘์œ„๋กœ ๋งŒ๋“ค์–ด์„œ ๋ฆฌํ„ด : tempfile.mkstemp()

# ์ž„์‹œ ์ €์žฅ ๊ณต๊ฐ„์œผ๋กœ ์‚ฌ์šฉํ•  ํŒŒ์ผ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด : tempfile.TemporaryFile()

 

โ–   traceback

: ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰ ์ค‘ ๋ฐœ์ƒํ•œ ์˜ค๋ฅ˜๋ฅผ ์ถ”์ ํ•˜๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ

 

(โ–ผ ์ž‘์„ฑ์ž: ์ž„ํšจ์‹ )

json: JSON ๋ฐ์ดํ„ฐ๋ฅผ ์‰ฝ๊ฒŒ ์ฒ˜๋ฆฌํ•˜๊ณ ์ž ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ

* JSON ๋ฐ์ดํ„ฐ: ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ๋ฌธ์ž ๊ธฐ๋ฐ˜ ๋ฐ์ดํ„ฐ ํฌ๋งท. ์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด ํ‘œ๊ธฐ๋ฒ•

(1) JSON ํŒŒ์ผ ์ฝ์–ด์„œ ๋”•์…”๋„ˆ๋ฆฌ ์ž๋ฃŒํ˜•์œผ๋กœ ๋ฆฌํ„ดํ•ด์˜ค๊ธฐ: load()

json ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๋‹ค. ์ฒ˜์Œ์— json ํ˜•์‹์œผ๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ์ง€ ์•Š์•„์„œ ์ฝ”๋“œ ๊ฒฐ๊ด๊ฐ’์œผ๋กœ error๋ฅผ ๋ณผ ์ˆ˜ ์žˆ์—ˆ๋‹ค...

(2) ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ JSON ํŒŒ์ผ๋กœ ์ƒ์„ฑํ•˜๊ธฐ: json.dump

(3) ๋”•์…”๋„ˆ๋ฆฌ๋ฅผ JSON ๋ฌธ์ž์—ด๋กœ ๋งŒ๋“ค๊ธฐ: json.dumps()

 ์ด๋•Œ ํ•œ๊ธ€ ๋ฌธ์ž์—ด์ด ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ๋‹ค. ์™œ์ผ๊นŒ?

dump(), dumps() ํ•จ์ˆ˜๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์•„์Šคํ‚ค ํ˜•ํƒœ๋กœ ์ €์žฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. 

ensure_ascii=False ์˜ต์…˜์„ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ์œ ๋‹ˆ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ๋ฌธ์ž์—ด์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋‹ค.
JSON ๋ฌธ์ž์—ด์„ ๋”•์…”๋„ˆ๋ฆฌ๋กœ ์—ญ๋ณ€ํ™˜ํ•ด ์‚ฌ์šฉํ•  ๋–„๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

(4) ์ถœ๋ ฅ๋œ JSON ๋ฌธ์ž์—ด ๋ณด๊ธฐ ์ข‹๊ฒŒ ์ •๋ ฌ: indent ์˜ต์…˜ ์ถ”๊ฐ€

(5) ๋”•์…”๋„ˆ๋ฆฌ ์™ธ์— ๋ฆฌ์ŠคํŠธ๋‚˜ ํŠœํ”Œ๋„ JSON ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ๋‹ค. 

 

 

urllib: URL์„ ์ฝ๊ณ  ๋ถ„์„ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ

(1) ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅ๋ฐ›์•„ ์œ„ํ‚ค๋…์Šค์˜ ํŠน์ • ํŽ˜์ด์ง€๋ฅผ wikidocs_ํŽ˜์ด์ง€_๋ฒˆํ˜ธ.htmlํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜

get_wikidocs(page)๋Š” ์œ„ํ‚ค๋…์Šค์˜ ํŽ˜์ด์ง€ ๋ฒˆํ˜ธ๋ฅด ์ž…๋ ฅ๋ฐ›์•„ ํ•ด๋‹น ํŽ˜์ด์ง€์˜ ๋ฆฌ์†Œ์Šค ๋‚ด์šฉ์„ ํŒŒ์ผ๋กœ ์ €์žฅํ•˜๋Š” ํ•จ์ˆ˜.

์ด๋ ‡๊ฒŒ ํ˜ธ์ถœํ•ด๋ณด์ž!

ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์— https://wikidocs.net/12 ์›นํŽ˜์ด์ง€๊ฐ€ wikidocs_12.html์ด๋ผ๋Š” ํŒŒ์ผ๋กœ ์ €์žฅ๋˜์—ˆ๋‹ค. 

 

webbrowser: ํŒŒ์ด์ฌ ํ”„๋กœ๊ทธ๋žจ์—์„œ ์‹œ์Šคํ…œ ๋ธŒ๋ผ์šฐ์ €๋ฅผ ํ˜ธ์ธจํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ชจ๋“ˆ(๋ฏธํ•ด๊ฒฐ!!!)

์ฝ”๋“œ ๋…ธ์…˜ ํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์œผ๋กœ ์—ด๋Ÿฌ ์žˆ๊ธธ๋ž˜, open์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ์—ด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ False๊ฐ€ ๊ฒฐ๊ด๊ฐ’์œผ๋กœ ๋–ด๋‹ค. ์™œ์ง€...

 

 

05-7 ์™ธ๋ถ€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

pip: ํŒŒ์ด์ฌ ๋ชจ๋“ˆ์ด๋‚˜ ํŒจํ‚ค์ง€๋ฅผ ์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ฃผ๋Š” ๋„๊ตฌ

pip์˜ ์‚ฌ์šฉ์„ ์ •๋ฆฌํ•ด๋ณด์•˜๋‹ค.
์‹ค์ œ ๊ธ€์“ด์ด์˜ google colab์— ์„ค์น˜๋œ ํŒจํ‚ค์ง€ ๋ชฉ๋ก. ์—„์ฒญ๋‚˜๊ฒŒ ๋งŽ์•˜๋‹ค. ํ•œ ๋ฒˆ์— ์บก์ณ๊ฐ€ ์•ˆ ๋  ์ •๋„๋ผ์„œ ๋’ท๋ถ€๋ถ„์€ ์ƒ๋žต!

 

Faker: ํ…Œ์ŠคํŠธ์šฉ ๊ฐ€์งœ ๋ฐ์ดํ„ฐ๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ

pip์„ ์ด์šฉํ•ด Faker ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ๋จผ์ € ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค.
ํ…Œ์ŠคํŠธ์šฉ ์˜์–ด ์ด๋ฆ„, ํ•œ๊ตญ์–ด ์ด๋ฆ„, ๊ทธ๋ฆฌ๊ณ  ์ฃผ์†Œ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์•˜๋‹ค.
์ด๋ ‡๊ฒŒ ์—ฌ๋Ÿฌ ๊ฐœ๋„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. for ๋ฌธ์„ ํ™œ์šฉํ•ด์ฃผ์ž!
์œ„ ๋ฐ์ดํ„ฐ ํ•ญ๋ชฉ ๋ฟ ์•„๋‹ˆ๋ผ ๋‹ค์–‘ํ•œ ํ•ญ๋ชฉ๋“ค์ด ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด random์ฒ˜๋Ÿผ ์ž„์˜์˜ ์ˆซ์ž๋ฅผ ๋งŒ๋“ค์–ด์ค€๋‹ค๋˜๊ฐ€, ์ž„์˜์˜ ์ƒ‰์ƒ๋ช…์„ ๋งŒ๋“ค์–ด์ฃผ๊ธฐ๋„ ํ•œ๋‹ค.

 

sympy: ๋ฐฉ์ •์‹์„ ํ’€ ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“ˆ

๋งˆ์ฐฌ๊ฐ€์ง€๋กœ pip์„ ์‚ฌ์šฉํ•ด ๋จผ์ € ์„ค์น˜ํ•ด์ฃผ์—ˆ๋‹ค.

(1) A๊ฐ€ ๊ฐ€์ง„ ๋ˆ์„ x๋ผ๊ณ  ํ•˜๊ณ , ํ•™์šฉํ’ˆ์„ ์‚ฌ๊ณ  ๋‚จ์€ ๋ˆ์„ ๊ตฌํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณด์ž!

         1) A๋Š” ๊ฐ€์ง„ ๋ˆ์˜ 2/5๋กœ ํ•™์šฉํ’ˆ์„ ์ƒ€๋‹ค. 

         2) ํ•™์šฉํ’ˆ์„ ์‚ฌ๋Š” ๋ฐ ์“ด ๋ˆ์€ 1,760์›์ด๋‹ค. 

์ฐธ๊ณ ๋กœ Fraction๋ง๊ณ  float๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. ์™œ์ธ์ง€ ๋‚˜์ค‘์— ํƒ๊ตฌํ•ด๋ณผ ๊ฒƒ!

(2) ์ด์ฐจ๋ฐฉ์ •์‹์˜ ํ’€์ด

(3) ์—ฐ๋ฆฝ๋ฐฉ์ •์‹์˜ ํ’€์ด

* fractions.Fraction์œผ๋กœ ์œ ๋ฆฌ์ˆ˜ ์—ฐ์‚ฐํ•˜๊ธฐ: ํŒŒ์ด์ฌ์—์„œ ์œ ๋ฆฌ์ˆ˜ ์—ฐ์‚ฐ์„ ์ •ํ™•ํ•˜๊ฒŒ ํ•˜๋ ค๋ฉด fractions.Fraction์„ ์‚ฌ์šฉํ•ด์•ผ ํ•จ!

๋‚˜์ค‘์— ํƒ๊ตฌํ•ด๋ด์•ผ ํ•  ๊ฒƒ

1. webbrowser ์ฝ”๋“œ ๋…ธ์…˜ ํŽ˜์ด์ง€๊ฐ€ ๋ธŒ๋ผ์šฐ์ € ์ฐฝ์œผ๋กœ ์—ด๋Ÿฌ ์žˆ๊ธธ๋ž˜, open์„ ์‚ฌ์šฉํ•ด์„œ ํ•ด๋‹น ์‚ฌ์ดํŠธ๋ฅผ ์—ด๊ณ  ์‹ถ์—ˆ๋Š”๋ฐ False๊ฐ€ ๊ฒฐ๊ด๊ฐ’์œผ๋กœ ๋–ด๋‹ค. ์™œ์ง€...

2. sympy ์ฐธ๊ณ ๋กœ Fraction๋ง๊ณ  float๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋œฌ๋‹ค. ์™œ์ธ์ง€?