μžλŠ” 씨앗
  • λΆ„λ₯˜ 전체보기
    • 🐣 기초 κ°œλ…
    • πŸ“Ž 유튜브
    • πŸ’Ύ 쑰각λͺ¨μŒ
    • πŸ‘©‍πŸ’» Error
    • ❄ React
    • πŸ₯Python
    • πŸ€ Spring
    • πŸ₯ž JS
    • πŸ‹ Docker
    • 🧭 WSO2
    • 🐧 Linux
    • πŸ”— SQL
    • 🐒 C#
    • πŸ“‘ 읽을거리
    • πŸ‘€μ§ˆλ¬Έλ“€
    • πŸ‘©‍πŸ’» κ΅­λΉ„ μˆ˜μ—…
      • Java μžλ°”
      • Oracle 였라클
      • JDBC
      • HTML & CSS
      • JavaScript
      • JSP
      • Servlet
      • Spring
      • MyBatis
    • πŸ“• 개발 혼곡
      • μžλ°”μ˜ 정석
      • μžλ°” ORM ν‘œμ€€ JPA ν”„λ‘œκ·Έλž˜λ°
hELLO Β· Designed By μ •μƒμš°.
μžλŠ” 씨앗

🌱

πŸ₯Python

점프 투 파이썬 04 파이썬의 μž…μΆœλ ₯ (ν•¨μˆ˜, *args, kwargs, λ³€μˆ˜μ˜ λ²”μœ„, lambda, input ν•¨μˆ˜, print ν•¨μˆ˜, 파일 생성/읽기/μ“°κΈ°, withλ¬Έ, sys λͺ¨λ“ˆ μ‚¬μš©ν•˜κΈ°)

2024. 2. 27. 11:10

4-1 ν•¨μˆ˜

ν•¨μˆ˜λž€ 무엇인가

  • μž…λ ₯값을 κ°€μ§€κ³  μ–΄λ–€ 일을 μˆ˜ν–‰ν•œ ν›„ κ·Έ 결과물을 λ‚΄μ–΄ λ†“λŠ” 것

ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λŠ” μ΄μœ λŠ” λ¬΄μ—‡μΌκΉŒ?

  • 반볡적으둜 μ‚¬μš©λ˜λŠ” κ°€μΉ˜ μžˆλŠ” 뢀뢄을 ν•œ λ­‰μΉ˜λ‘œ λ¬Άμ–΄ ‘μ–΄λ–€ μž…λ ₯값을 μ£Όμ—ˆμ„ λ•Œ μ–΄λ–€ 결과값을 리턴해 μ€€λ‹€’λΌλŠ” μ‹μ˜ ν•¨μˆ˜λ‘œ μž‘μ„±ν•œλ‹€.
  • ν”„λ‘œκ·Έλž¨μ„ κΈ°λŠ₯ λ‹¨μœ„μ˜ ν•¨μˆ˜λ‘œ 뢄리해 λ†“μœΌλ©΄ ν”„λ‘œκ·Έλž¨ 흐름을 일λͺ© μš”μ—°ν•˜κ²Œ λ³Ό 수 μžˆλ‹€.

파이썬 ν•¨μˆ˜μ˜ ꡬ쑰

  • def: ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μ‚¬μš©ν•˜λŠ” μ˜ˆμ•½μ–΄
  • ν•¨μˆ˜λͺ… : μž„μ˜λ‘œ λ§Œλ“€ 수 있음
  • λ§€κ°œλ³€μˆ˜: ν•¨μˆ˜μ— μž…λ ₯으둜 μ „λ‹¬λ˜λŠ” 값을 λ°›λŠ” λ³€μˆ˜
  • return : ν•¨μˆ˜μ˜ 결과값을 λ¦¬ν„΄ν•˜λŠ” λͺ…λ Ή
def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜):
	μˆ˜ν–‰ν•  λ¬Έμž₯1
	μˆ˜ν–‰ν•  λ¬Έμž₯2
...

def add(a,b):
	return a+b 

-------------------

>>> def add(a,b):
...     return a+b
...
>>> a=3
>>> b=4
>>> c=add(a,b)
>>> print(c)
7

λ§€κ°œλ³€μˆ˜μ™€ 인수

  • λ§€κ°œλ³€μˆ˜(parameter) : ν•¨μˆ˜μ— μž…λ ₯으둜 μ „λ‹¬λœ 값을 λ°›λŠ” λ³€μˆ˜
  • 인수(arguments) : ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•  λ•Œ μ „λ‹¬ν•˜λŠ” μž…λ ₯κ°’
def add(a,b): #a,bλŠ” λ§€κ°œλ³€μˆ˜
	return a+b  

print(add(3,4)) # 3,4 λŠ” 인수

μž…λ ₯κ°’κ³Ό 리턴값에 λ”°λ₯Έ ν•¨μˆ˜μ˜ ν˜•νƒœ

ν•¨μˆ˜λŠ” μž…λ ₯κ°’κ³Ό λ¦¬ν„΄κ°’μ˜ 쑴재 μœ λ¬΄μ— 따라 4κ°€μ§€ μœ ν˜•μœΌλ‘œ λ‚˜λ‰œλ‹€.

일반적인 ν•¨μˆ˜

  • μž…λ ₯κ°’ O, 리턴값 O
#ν•¨μˆ˜ μ •μ˜
def ν•¨μˆ˜λͺ…(λ§€κ°œλ³€μˆ˜):
	μˆ˜ν–‰ν•  λ¬Έμž₯
...
	return 리턴값

#ν•¨μˆ˜ μ‚¬μš©
리턴값_λ°›μ„λ³€μˆ˜ = ν•¨μˆ˜λͺ…(μž…λ ₯인수, μž…λ ₯인수 ,,,)

>>> def add(a,b):
...     result = a+b
...     return result
...
>>> a=add(3,4)
>>> print(a)
7

μž…λ ₯값이 μ—†λŠ” ν•¨μˆ˜

  • μž…λ ₯κ°’ X, 리턴값 O
>>> def say():
...     return 'Hi'
...
>>> a=say()
>>> print(a)
Hi

#ν•¨μˆ˜ μ‚¬μš©
리턴값_λ°›μ„λ³€μˆ˜ = ν•¨μˆ˜λͺ…( )

리턴값이 μ—†λŠ” ν•¨μˆ˜

  • μž…λ ₯κ°’ O, 리턴값 X
>>> def add(a,b):
...     print("%d, %d의 합은 %dμž…λ‹ˆλ‹€." %(a,b,a+b))
...
>>> add(3,4)
3, 4의 합은 7μž…λ‹ˆλ‹€.

#ν•¨μˆ˜ μ‚¬μš©
ν•¨μˆ˜λͺ…(μž…λ ₯인수, μž…λ ₯인수 ,,,)

μž…λ ₯값도, 리턴값도 μ—†λŠ” ν•¨μˆ˜

  • μž…λ ₯κ°’ X, 리턴값 X
>>> def say():
...     print('Hi')
...
>>> say()
Hi

#ν•¨μˆ˜ μ‚¬μš©
ν•¨μˆ˜λͺ…()

λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•˜μ—¬ ν˜ΈμΆœν•˜κΈ°

  • μˆœμ„œμ— 상관없이 μ‚¬μš©ν•  수 있음
>>> def sub(a,b):
...     return a-b
...
>>> result = sub(a=7,b=3)
>>> print(result)
4

>>> result=sub(b=5, a=3)
>>> print(result)
-2

μž…λ ₯값이 λͺ‡ κ°œκ°€ 될지 λͺ¨λ₯Ό λ•ŒλŠ” μ–΄λ–»κ²Œ ν•΄μ•Ό ν• κΉŒ?

def ν•¨μˆ˜λͺ…(*λ§€κ°œλ³€μˆ˜):
	μˆ˜ν–‰ν•  λ¬Έμž₯
	...

#μ—¬λŸ¬ 개의 μž…λ ₯값을 λ°›λŠ” ν•¨μˆ˜ λ§Œλ“€κΈ°
>>> def add_many(*args):
...     result = 0
...     for i in args:
...             result = result +i
...     return result
...
>>> result = add_many(1,2,3)
>>> print(result)
6
>>> result = add_many(1,2,3,4,5,6,7,8,9,10)
>>> print(result)
55

------
# *args λ§€κ°œλ³€μˆ˜μ™€ μΆ”κ°€ λ§€κ°œλ³€μˆ˜ μ‚¬μš©
>>> def add_mul(choice, *args):
...     if choice=="add":
...             result = 0
...             for i in args:
...                     result = result +i
...     elif choice=="mul":
...             result=1
...             for i in args:
...                     result = result *i
...     return result
...
>>> result = add_mul('add',1,2,3,4,5)
>>> print(result)
15
>>> result = add_mul('mul',1,2,3,4,5)
>>> print(result)
120

ν‚€μ›Œλ“œ λ§€κ°œλ³€μˆ˜, kwargs

  • λ§€κ°œλ³€μˆ˜ μ•žμ— **λ₯Ό 뢙이면 κ·Έ λ§€κ°œλ³€μˆ˜λŠ” λ”•μ…”λ„ˆλ¦¬κ°€ 되고, key=value ν˜•νƒœμ˜ μž…λ ₯값이 κ·Έ λ”•μ…”λ„ˆλ¦¬μ— μ €μž₯λœλ‹€.
>>> def print_kwargs(**kwargs):
...     print(kwargs)
...
>>> print_kwargs(a=1)
{'a': 1}
>>> print_kwargs(name='foo',age=3)
{'name': 'foo', 'age': 3}

ν•¨μˆ˜μ˜ 리턴값은 μ–Έμ œλ‚˜ ν•˜λ‚˜μ΄λ‹€

>>> def add_and_mul(a,b):
...     return a+b, a*b
...

#리턴값은 2κ°œκ°€ μ•„λ‹ˆλΌ μ–Έμ œλ‚˜ 1κ°œμž„
#νŠœν”Œκ°’ ν•˜λ‚˜μΈ (a+b, a*b)둜 리턴됨
>>> result = add_and_mul(3,4)
>>> print(result)
(7, 12)

#ν•˜λ‚˜μ˜ νŠœν”Œκ°’μ„ 2개둜 λΆ„λ¦¬ν•˜μ—¬ λ°›κΈ°
>>> result1,result2 =add_and_mul(3,4)
>>> print(result1, result2)
7 12
>>> def add_and_mul(a,b):
...     return a+b #값을 리턴 ν›„ ν•¨μˆ˜λ₯Ό λΉ μ Έλ‚˜κ°
...     return a*b 
...

#리턴문을 λ§Œλ‚˜λ©΄ 값을 λŒλ €μ€€ ν›„ ν•¨μˆ˜λ₯Ό λΉ μ Έλ‚˜κ°
>>> result = add_and_mul(2,3)
>>> print(result)
5

λ§€κ°œλ³€μˆ˜μ— μ΄ˆκΉƒκ°’ 미리 μ„€μ •ν•˜κΈ°

#λ§€κ°œλ³€μˆ˜(man)에 μ΄ˆκΈ°κ°’μ„ 미리 μ„€μ •
def say_myself(name, age, man=True):
        print("λ‚˜μ˜ 이름은 %sμž…λ‹ˆλ‹€." % name)
        print("λ‚˜μ΄λŠ” %dμ‚΄μž…λ‹ˆλ‹€" % age)
        if man:
                print("λ‚¨μžμž…λ‹ˆλ‹€.")
        else:
                print("μ—¬μžμž…λ‹ˆλ‹€.")

say_myself("λ°•μ‘μš©",27)
say_myself("λ°•μ‘μš©",27, True)
say_myself("λ°•μ‘μš©",27, False)
  • μ΄ˆκΈ°κ°’μ΄ μ—†λŠ” λ§€κ°œλ³€μˆ˜(age)λŠ” μ΄ˆκΈ°κ°’μ΄ μžˆλŠ” λ§€κ°œλ³€μˆ˜(man) 뒀에 μ‚¬μš©ν•  수 μ—†λ‹€
  • μ΄ˆκΈ°ν™” ν•˜κ³  싢은 λ§€κ°œλ³€μˆ˜λŠ” 항상 λ’€μͺ½μ— 놓아야 함
def say_myself(name, man=True, age):
        print("λ‚˜μ˜ 이름은 %sμž…λ‹ˆλ‹€." % name)
        print("λ‚˜μ΄λŠ” %dμ‚΄μž…λ‹ˆλ‹€" % age)
        if man:
                print("λ‚¨μžμž…λ‹ˆλ‹€.")
        else:
                print("μ—¬μžμž…λ‹ˆλ‹€.")

#였λ₯˜λ°œμƒ
say_myself("λ°•μ‘μš©",27)
SyntaxError: parameter without a default follows parameter with a default

ν•¨μˆ˜ μ•ˆμ—μ„œ μ„ μ–Έν•œ λ³€μˆ˜μ˜ 효λ ₯ λ²”μœ„

  • ν•¨μˆ˜ μ•ˆμ—μ„œ μ‚¬μš©ν•˜λŠ” λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜ λ°–μ˜ λ³€μˆ˜λͺ…κ³Ό μ „ν˜€ μƒκ΄€μ—†μŒ
  • ν•¨μˆ˜ μ•ˆμ—μ„œ μ„ μ–Έν•œ λ§€κ°œλ³€μˆ˜λŠ” ν•¨μˆ˜ μ•ˆμ—μ„œλ§Œ μ‚¬μš©λ  뿐, ν•¨μˆ˜ λ°–μ—μ„œλŠ” μ‚¬μš©λ˜μ§€ μ•ŠμŒ
a=1
def vartest(a):  
    a=a+1

vartest(a) #λ§€κ°œλ³€μˆ˜ aλŠ” ν•¨μˆ˜λ§Œμ˜ λ³€μˆ˜
print(a) #ν•¨μˆ˜ λ°–μ˜ aμ™€λŠ” 상관 μ—†μŒ

ν•¨μˆ˜ μ•ˆμ—μ„œ ν•¨μˆ˜ λ°–μ˜ λ³€μˆ˜λ₯Ό λ³€κ²½ν•˜λŠ” 방법

  • return μ‚¬μš©ν•˜κΈ°

vartest ν•¨μˆ˜ μ•ˆμ˜ a λ§€κ°œλ³€μˆ˜μ™€ ν•¨μˆ˜ λ°–μ˜ aλŠ” λ‹€λ₯Έ κ²ƒμ΄μ§€λ§Œ, ν•¨μˆ˜μ˜ 리턴값을 λ³€μˆ˜μ— λŒ€μž…ν•˜μ—¬ λ³€κ²½ν•  수 있음

a=1
def vartest(a):  
    a=a+1
		return a

a= vartest(a) #ν•¨μˆ˜μ˜ 리턴값을 ν•¨μˆ˜ λ°– a에 λŒ€μž…
print(a) 

  • global λͺ…λ Ήμ–΄ μ‚¬μš©ν•˜κΈ°

μ™ΈλΆ€ λ³€μˆ˜μ— 쒅속적인 ν•¨μˆ˜λŠ” 쒋은 ν•¨μˆ˜κ°€ μ•„λ‹˜

λ˜λ„λ‘ global λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•˜λŠ” 방법은 ν”Όν•΄μ•Ό 함

a=1
def vartest():
    global a  #ν•¨μˆ˜ μ•ˆμ—μ„œ ν•¨μˆ˜ λ°–μ˜ aλ³€μˆ˜λ₯Ό 직접 μ‚¬μš©ν•˜κ² λ‹€λŠ” 뜻
    a=a+1

vartest() 
print(a) #좜λ ₯ 2

lambda μ˜ˆμ•½μ–΄

  • ν•¨μˆ˜λ₯Ό 생성할 λ•Œ μ‚¬μš©ν•˜λŠ” μ˜ˆμ•½μ–΄, def와 λ™μΌν•œ 역할을 함
  • 보톡 ν•¨μˆ˜λ₯Ό ν•œμ€„λ‘œ κ°„κ²°ν•˜κ²Œ λ§Œλ“€ λ•Œ μ‚¬μš©ν•¨
  • defλ₯Ό μ‚¬μš©ν•΄μ•Ό ν•  μ •λ„λ‘œ λ³΅μž‘ν•˜μ§€ μ•Šκ±°λ‚˜, defλ₯Ό μ‚¬μš©ν•  수 μ—†λŠ” κ³³μ—μ„œ 주둜 μ“°μž„
  • lambda둜 λ§Œλ“  ν•¨μˆ˜λŠ” returnλͺ…λ Ήμ–΄κ°€ 없어도 ν‘œν˜„μ‹μ˜ 결과값을 리턴함
ν•¨μˆ˜λͺ… = lambda λ§€κ°œλ³€μˆ˜1, λ§€κ°œλ³€μˆ˜2, .. : λ§€κ°œλ³€μˆ˜λ₯Ό_μ΄μš©ν•œ_ν‘œν˜„μ‹

>>> add = lambda a, b : a+b
>>> result = add(3,4)
>>> print(result)
7

 

4-2 μ‚¬μš©μž μž…μΆœλ ₯

μ‚¬μš©μž μž…λ ₯ ν™œμš©ν•˜κΈ°

input μ‚¬μš©ν•˜κΈ°

  • input은 μ‚¬μš©μžκ°€ ν‚€λ³΄λ“œλ‘œ μž…λ ₯ν•œ λͺ¨λ“  것을 λ¬Έμžμ—΄λ‘œ μ €μž₯함
>>> a=input()
Life is too short, you need python
>>> a
'Life is too short, you need python'

ν”„λ‘¬ν”„νŠΈλ₯Ό λ„μ›Œ μ‚¬μš©μž μž…λ ₯λ°›κΈ°

  • input( ) κ΄„ν˜Έ μ•ˆμ— μ•ˆλ‚΄ 문ꡬλ₯Ό μž…λ ₯ν•˜μ—¬ ν”„λ‘¬ν”„νŠΈλ₯Ό 띄움
  • input은 μž…λ ₯λ˜λŠ” λͺ¨λ“  것을 λ¬Έμžμ—΄λ‘œ μ·¨κΈ‰ν•˜κΈ° λ•Œλ¬Έμ— numberλŠ” λ¬Έμžμ—΄μž„(숫자x)
>>> number = input("숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ")
숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš”: 3
>>> print(number)
3
>>> type(number)
<class 'str'>

print μžμ„Ένžˆ μ•ŒκΈ°

ν°λ”°μ˜΄ν‘œλ‘œ λ‘˜λŸ¬μ‹ΈμΈ λ¬Έμžμ—΄μ€ + μ—°μ‚°κ³Ό 동일

>>> print("Life" "is" "short")
Lifeisshort
>>> print("Life"+"is"+"short")
Lifeisshort

λ¬Έμžμ—΄ λ„μ–΄μ“°κΈ°λŠ” μ‰Όν‘œλ‘œ ν•œλ‹€

>>> print("Life","is","short")
Life is short

ν•œμ€„μ— κ²°κ³Όκ°’ 좜λ ₯ν•˜κΈ°

  • λ§€κ°œλ³€μˆ˜ endλ₯Ό μ‚¬μš©ν•΄ 끝 문자λ₯Ό μ§€μ •
  • end λ§€κ°œλ³€μˆ˜μ˜ μ΄ˆκΈ°κ°’μ€ μ€„λ°”κΏˆ(\n)λ¬Έμžμž„
>>> for i in range(10):
...     print(i,end=' ')
...
0 1 2 3 4 5 6 7 8 9 >>>

 

4-3 파일 읽고 μ“°κΈ°

파일 μƒμ„±ν•˜κΈ°

  • open ν•¨μˆ˜ : 파이썬 λ‚΄μž₯ ν•¨μˆ˜
    • r : 읽기 λͺ¨λ“œ (νŒŒμΌμ„ 읽기만 ν•  λ•Œ μ‚¬μš©ν•¨)
    • w : μ“°κΈ° λͺ¨λ“œ (νŒŒμΌμ— λ‚΄μš©μ„ μ“Έ λ•Œ μ‚¬μš©ν•¨)
    • a : μΆ”κ°€λͺ¨λ“œ (파일의 λ§ˆμ§€λ§‰μ— μƒˆλ‘œμš΄ λ‚΄μš©μ„ μΆ”κ°€ν•  λ•Œ μ‚¬μš©ν•¨)
파일_객체 = open(파일λͺ…, νŒŒμΌμ—΄κΈ°λͺ¨λ“œ)
f=open("μƒˆνŒŒμΌ.txt",'w')
f.close()

#μ“°κΈ°λͺ¨λ“œλ‘œ νŒŒμΌμ„ μ—΄λ©΄
#파일이 이미 μ‘΄μž¬ν•  λ•Œ : κΈ°μ‘΄ λ‚΄μš© 사라짐
#파일이 μ‘΄μž¬ν•˜μ§€ μ•ŠμœΌλ©΄ : μƒˆλ‘œμš΄ 파일 생성됨

#κ²½λ‘œμ„€μ •
f=open("C:/doit/μƒˆνŒŒμΌ.txt",'w')
f.close() #μ“°κΈ°λͺ¨λ“œλ‘œ μ—΄μ—ˆλ˜ νŒŒμΌμ„ λ‹«μ§€ μ•Šκ³  λ‹€μ‹œ μ‚¬μš©ν•˜λ €κ³  ν•˜λ©΄ 였λ₯˜ λ°œμƒ
					#직접 λ‹«μ•„μ£ΌλŠ” 것이 μ’‹μŒ

νŒŒμΌμ„ μ“°κΈ° λͺ¨λ“œλ‘œ μ—΄μ–΄ λ‚΄μš© μ“°κΈ°

f=open("C:/python/μƒˆνŒŒμΌ.txt",'w')
for i in range(1,11):
    data = "%d번째 μ€„μž…λ‹ˆλ‹€.\\n" %i
    f.write(data)
f.close()

νŒŒμΌμ„ μ½λŠ” μ—¬λŸ¬ κ°€μ§€ 방법

  • readline ν•¨μˆ˜ μ΄μš©ν•˜κΈ°
    • ν•œ 쀄씩 읽어 좜λ ₯ν•  λ•Œ 쀄 끝에 \n λ¬Έμžκ°€ μžˆμœΌλ―€λ‘œ λΉˆμ€„λ„ 같이 좜λ ₯됨
#파일의 첫 번째 쀄 μ½μ–΄μ„œ 좜λ ₯
f=open("μƒˆνŒŒμΌ.txt", 'r')
line = f.readline() 
print(line)
f.close()

#파일의 λͺ¨λ“  쀄 μ½μ–΄μ„œ 좜λ ₯
f=open("μƒˆνŒŒμΌ.txt", 'r')
while True:
    line = f.readline() 
    if not line : break
    print(line)
f.close()
  • readlines ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
    • 파일의 λͺ¨λ“  쀄을 μ½μ–΄μ„œ, 각 쀄을 μš”μ†Œλ‘œ κ°€μ§€λŠ” 리슀트λ₯Ό 리턴함
f=open("μƒˆνŒŒμΌ.txt", 'r')
lines = f.readlines()
for line in lines :
    print(line)
f.close()

#μ€„λ°”κΏˆ 문자λ₯Ό 제거
f=open("μƒˆνŒŒμΌ.txt", 'r')
lines = f.readlines()
for line in lines :
    line = line.strip() #쀄 끝의 μ€„λ°”κΏˆ 문자λ₯Ό 제거
		print(line)
f.close()
  • read ν•¨μˆ˜ μ‚¬μš©ν•˜κΈ°
    • 파일의 λ‚΄μš© 전체λ₯Ό λ¬Έμžμ—΄λ‘œ 리턴함
f=open("μƒˆνŒŒμΌ.txt", 'r')
data = f.read()
print(data)
f.close()
  • 파일 객체λ₯Ό forλ¬Έκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°
    • 파일 κ°μ²΄λŠ” forλ¬Έκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜μ—¬ νŒŒμΌμ„ 쀄 λ‹¨μœ„λ‘œ 읽을 수 있음
f=open("μƒˆνŒŒμΌ.txt", 'r')
for line in f:
	print(line)
f.close()

νŒŒμΌμ— μƒˆλ‘œμš΄ λ‚΄μš© μΆ”κ°€ν•˜κΈ°

  • νŒŒμΌμ„ μΆ”κ°€λͺ¨λ“œ(’a’)둜 μ—΄μ–΄μ•Ό ν•œλ‹€(값을 μœ μ§€ν•˜λ©΄μ„œ μƒˆλ‘œμš΄ κ°’λ§Œ μΆ”κ°€ν•˜λŠ” 경우)
  • μ“°κΈ°λͺ¨λ“œ(’w’)둜 이미 μ‘΄μž¬ν•˜λŠ” νŒŒμΌμ„ μ—΄λ©΄ λ‚΄μš©μ΄ λͺ¨λ‘ μ‚¬λΌμ§€κ²Œ 됨
f=open("μƒˆνŒŒμΌ.txt", 'a') #μΆ”κ°€λͺ¨λ“œλ‘œ μ—΄μ–΄μ•Ό 함
for i in range(11,20):
    data = "%d번째 μ€„μž…λ‹ˆλ‹€.\\n" % i
    f.write(data)
f.close()

withλ¬Έκ³Ό ν•¨κ»˜ μ‚¬μš©ν•˜κΈ°

  • withλ¬Έ: with블둝을 λ²—μ–΄λ‚˜λŠ” μˆœκ°„, μ—΄λ¦° 파일 객체가 μžλ™μœΌλ‘œ λ‹«νž˜
with open("foo.txt", "w") as f:
    f.write("Life is too short, ou need python")

 

4-4 ν”„λ‘œκ·Έλž¨μ˜ μž…μΆœλ ₯

sys λͺ¨λ“ˆ μ‚¬μš©ν•˜κΈ°

import sys

#sysλͺ¨λ“ˆμ˜ argv : ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œ μ „λ‹¬λœ 인수
args = sys.argv[1:]
for i in args:
    print(i)

------λͺ…λ Ή ν”„λ‘¬ν”„νŠΈμ—μ„œ------
C:\\python\\0227>python sys1.py aaa bbb ccc #ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œ 인수 전달
aaa
bbb
ccc
import sys

#sysλͺ¨λ“ˆμ˜ argv : ν”„λ‘œκ·Έλž¨ μ‹€ν–‰ μ‹œ μ „λ‹¬λœ 인수
args = sys.argv[1:]
for i in args:
    print(i.upper(), end=' ')

------λͺ…λ Ή ν”„λ‘¬ν”„νŠΈμ—μ„œ------
C:\\python\\0227>python sys2.py Life is too short, you need python
LIFE IS TOO SHORT, YOU NEED PYTHON

λ˜μƒˆκΉ€ 문제

#1. ν™€μˆ˜ 짝수 νŒλ³„ν•˜κΈ°
#μ£Όμ–΄μ§„ μžμ—°μˆ˜κ°€ ν™€μˆ˜μΈμ§€ μ§μˆ˜μΈμ§€ νŒλ³„ν•΄μ£ΌλŠ” ν•¨μˆ˜ is_odd μž‘μ„±ν•˜κΈ° 
#(ν™€μˆ˜λ©΄ True, 짝수면 False 리턴)
number = int(input("μžμ—°μˆ˜λ₯Ό μž…λ ₯ν•΄μ£Όμ„Έμš” : "))
def is_odd(number):
    if number%2==1 :
        return True
    else: 
        return False
print(is_odd(number))

#λžŒλ‹€μ™€ 쑰건뢀 ν‘œν˜„μ‹μœΌλ‘œ κ°„λ‹¨νžˆ ν•˜κΈ°
# ν•¨μˆ˜λͺ… = lamda λ§€κ°œλ³€μˆ˜ : ν‘œν˜„μ‹
is_odd = lambda x : True if x%2==1 else False

#2. λͺ¨λ“  μž…λ ₯κ°’μ˜ 평균값 κ΅¬ν•˜κΈ°
#μž…λ ₯으둜 λ“€μ–΄μ˜€λŠ” λͺ¨λ“  수의 평균값을 κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜ μž‘μ„±ν•˜κΈ° (μž…λ ₯ κ°œμˆ˜λŠ” μ •ν•΄μ Έμžˆμ§€ μ•ŠμŒ)
def avg_numbers(*args): #μž…λ ₯ κ°œμˆ˜μ— 상관없이 μ‚¬μš©ν•˜κΈ° μœ„ν•¨
    result=0
    for i in args:
        result += i
    return result/len(args)
print(avg_numbers(1,2))
print(avg_numbers(1,2,3,4,5))

#3. ν”„λ‘œκ·Έλž¨ 였λ₯˜ μˆ˜μ •1
input1 = input("첫 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ")
input2 = input("두 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : ")
total = input1 + input2
print("두 수의 합은 %sμž…λ‹ˆλ‹€" %total)

"""κ²°κ³Ό
첫 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 5
두 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 5
두 수의 합은 55μž…λ‹ˆλ‹€
"""

#μˆ˜μ •ν•œ μ½”λ“œ
input1 = int(input("첫 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : "))
input2 = int(input("두 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : "))
total = input1 + input2
print("두 수의 합은 %dμž…λ‹ˆλ‹€" %total)

"""κ²°κ³Ό
첫 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 5
두 번째 숫자λ₯Ό μž…λ ₯ν•˜μ„Έμš” : 5
두 수의 합은 10μž…λ‹ˆλ‹€
"""

#4. 좜λ ₯ κ²°κ³Όκ°€ λ‹€λ₯Έ 것은? 
#3λ²ˆμ€ 띄어쓰기 됨
print("you" "need" "python")
print("you" + "need" + "python")
print("you", "need", "python") #μ‰Όν‘œκ°€ μžˆλŠ” 경우 곡백 μ‚½μž…λ¨
print("".join(["you","need", "python"]))

"""
youneedpython
youneedpython
you need python
youneedpython
"""

#5. ν”„λ‘œκ·Έλž¨ μˆ˜μ •ν•˜κΈ°
#Life is too shortλ₯Ό 좜λ ₯ν•˜λ„λ‘ μˆ˜μ •
f1 = open("test.txt",'w')
f1.write("Life is too short")

f2 = open("test.txt",'r')
print(f2.read())

#μˆ˜μ •ν•œ μ½”λ“œ
f1 = open("test.txt",'w')
f1.write("Life is too short")
f1.close() #μ“°κΈ°λͺ¨λ“œλ‘œ μž‘μ„±ν•œ νŒŒμΌμ€ λ‹«μ•„μ€˜μ•Ό 이후 였λ₯˜μ—†μ΄ μ‚¬μš© κ°€λŠ₯ 

f2 = open("test.txt",'r')
print(f2.read())

#ν˜Ήμ€ withλ¬Έ μ‚¬μš©(closeλ₯Ό λͺ…μ‹œν•  ν•„μš” μ—†μŒ)
with open("test.txt",'w') as f1:
	f1.write("Life is too short")
with openopen("test.txt",'r') as f2:
	print(f2.read())

#6. μ‚¬μš©μž μž…λ ₯ μ €μž₯ν•˜κΈ°
#μ‚¬μš©μžμ˜ μž…λ ₯을 파일(test.txt)에 μ €μž₯ν•˜λŠ” ν”„λ‘œκ·Έλž¨ μž‘μ„±ν•˜κΈ°
#단, μž¬μ‹€ν–‰ μ‹œ 기쑴에 μž‘μ„±ν•œ λ‚΄μš©μ„ μœ μ§€ν•˜κ³  μƒˆλ‘œ μž…λ ₯ν•œ λ‚΄μš©μ„ μΆ”κ°€ν•΄μ•Ό 함
user_input = input("μ €μž₯ν•  λ‚΄μš©μ„ μž…λ ₯ν•˜μ„Έμš”: ")
f=open('test.txt','a') #λ‚΄μš© μΆ”κ°€ν•˜κΈ° μœ„ν•΄ 'a' μ‚¬μš©
f.write(user_input)
f.write("\\n") # μž…λ ₯ν•œ λ‚΄μš©μ„ 쀄 λ‹¨μœ„λ‘œ κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄ μ€„λ°”κΏˆ 문자 μ‚½μž…
f.close()

#7. 파일의 λ¬Έμžμ—΄ λ°”κΎΈκΈ°
#javaλΌλŠ” λ¬Έμžμ—΄μ„ python으둜 λ°”κΎΈμ–΄ μ €μž₯ν•˜κΈ°
"""
Life is too short
you need java
"""

f=open('test.txt','r')
body = f.read()
f.close()

body = body.replace('java','python')
f=open('test.txt','w') #μ“°κΈ°λͺ¨λ“œλ‘œ μ—΄κΈ°
f.write(body)
f.close()

#8. μž…λ ₯값을 λͺ¨λ‘ 더해 좜λ ₯ν•˜κΈ°
#μ‹€ν–‰ν•  λ•Œ μž…λ ₯값을 λͺ¨λ‘ 더해 좜λ ₯ν•˜λŠ” 슀크립트 μž‘μ„±ν•˜κΈ° 
import sys
numbers= sys.argv[1:]

result = 0
for number in numbers: 
    result += int(number)
print(result)
μ €μž‘μžν‘œμ‹œ λΉ„μ˜λ¦¬ λ³€κ²½κΈˆμ§€ (μƒˆμ°½μ—΄λ¦Ό)

'πŸ₯Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

점프 투 파이썬 05 파이썬 λ‚ κ°œ 달기 (클래슀, λͺ¨λ“ˆ, νŒ¨ν‚€μ§€, μ˜ˆμ™Έμ²˜λ¦¬, λ‚΄μž₯ν•¨μˆ˜, ν‘œμ€€ 라이브러리, μ™ΈλΆ€ 라이브러리)  (1) 2024.02.29
슀크립트, λͺ¨λ“ˆ, μ½”λ“œ  (0) 2024.02.29
if __name__ == "__main__  (0) 2024.02.29
점프 투 파이썬 03 μ œμ–΄λ¬Έ (ifλ¬Έ, whileλ¬Έ, forλ¬Έ, 쑰건뢀 ν‘œν˜„μ‹, breakλ¬Έ, continueλ¬Έ, rangeν•¨μˆ˜, 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜)  (1) 2024.02.26
점프 투 파이썬 02 μžλ£Œν˜• (μˆ«μžν˜•, λ¬Έμžμ—΄, 리슀트, νŠœν”Œ, λ”•μ…”λ„ˆλ¦¬, μ§‘ν•©, 뢈, λ³€μˆ˜)  (0) 2024.02.23
    'πŸ₯Python' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€
    • 슀크립트, λͺ¨λ“ˆ, μ½”λ“œ
    • if __name__ == "__main__
    • 점프 투 파이썬 03 μ œμ–΄λ¬Έ (ifλ¬Έ, whileλ¬Έ, forλ¬Έ, 쑰건뢀 ν‘œν˜„μ‹, breakλ¬Έ, continueλ¬Έ, rangeν•¨μˆ˜, 리슀트 μ»΄ν”„λ¦¬ν—¨μ…˜)
    • 점프 투 파이썬 02 μžλ£Œν˜• (μˆ«μžν˜•, λ¬Έμžμ—΄, 리슀트, νŠœν”Œ, λ”•μ…”λ„ˆλ¦¬, μ§‘ν•©, 뢈, λ³€μˆ˜)

    ν‹°μŠ€ν† λ¦¬νˆ΄λ°”