πŸ“š μŠ€ν„°λ””/파이썬 μŠ€ν„°λ”” κ°•μ˜μžλ£Œ

[4νŒ€/μ΄μ œμ€] 6μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - λ¬Έμžμ—΄

μ•Œ 수 μ—†λŠ” μ‚¬μš©μž 2023. 4. 28. 18:06

6μ°¨μ‹œ_λ¬Έμžμ—΄_κ°•μ˜μ•ˆ.pdf
0.71MB
6μ°¨μ‹œ_λ¬Έμžμ—΄_과제.pdf
0.18MB

 

01 λ¬Έμžμ—΄μ˜ 이해

이번 μž₯μ—μ„œλŠ” κ·Έλ™μ•ˆ λ³€μˆ˜λ‘œλ§Œ λ΄μ™”λ˜ λ¬Έμžμ—΄ν˜•μ— λŒ€ν•΄ μ•Œμ•„λ³΄λŠ” μž₯μž…λ‹ˆλ‹€.

> λ¬Έμžμ—΄μ˜ κ°œλ…

 

μ‹œν€€μŠ€ μžλ£Œν˜• : λ¦¬μŠ€νŠΈμ™€ 같이 데이터λ₯Ό 순차적으둜 μ €μž₯ν•˜λŠ” ν˜•μ‹μ˜ 데이터

→ λ¬Έμžμ—΄μ€ μ‹œν€€μŠ€ μžλ£Œν˜•!

 

> λ¬Έμžμ—΄κ³Ό λ©”λͺ¨λ¦¬ 곡간

 

<remind>

- μ»΄ν“¨ν„°λŠ” μ΄μ§„μˆ˜λ§Œ μ‚¬μš©ν•˜λ―€λ‘œ 컴퓨터가 숫자λ₯Ό μΈμ‹ν•˜λŠ” μ΅œμ†Œ λ‹¨μœ„λŠ” 1λΉ„νŠΈμ΄λ‹€.

- 1λΉ„νŠΈλŠ” 0κ³Ό 1λ§Œμ„ ν‘œν˜„ν•  수 μžˆλŠ” 크기이닀.

- 1λ°”μ΄νŠΈ = 8λΉ„νŠΈμ΄λ©° 2의 8제곱인 256κΉŒμ§€μ˜ 숫자λ₯Ό μ €μž₯ν•  수 μžˆλ‹€.

 

λ‹€μŒκ³Ό 같이 μ½”λ“œλ₯Ό ν†΅ν•΄μ„œ λ¬Έμžμ—΄μ΄ μ €μž₯된 κ³΅κ°„μ˜ 크기λ₯Ό 눈으둜 확인해볼 수 μžˆμŠ΅λ‹ˆλ‹€.

import sys
print(sys.getsizeof("a"), sys.getsizeof("ab"), sys.getsizeof("abc"))

50 51 52

- sys.getsizeof : νŠΉμ • λ³€μˆ˜ λ˜λŠ” κ°’μ˜ λ©”λͺ¨λ¦¬ 곡간을 μΈ‘μ •ν•˜λŠ” ν•¨μˆ˜

- a, ab, abc의 λ©”λͺ¨λ¦¬ 크킀가 50λ°”μ΄νŠΈ, 51λ°”μ΄νŠΈ, 52λ°”μ΄νŠΈλ‘œ 1λ°”μ΄νŠΈμ”© μ¦κ°€ν•˜λŠ” 것을 μ•Œ 수 μžˆλ‹€.

→ 영문자 ν•œ κΈ€μž λ‹Ή 1λ°”μ΄νŠΈμ˜ λ©”λͺ¨λ¦¬ 곡간을 μ‚¬μš©ν•œλ‹€.

→ 즉, ν•˜λ‚˜μ˜ 문자λ₯Ό μ €μž₯ν•˜κΈ° μœ„ν•΄ μ €μž₯λ˜λŠ” 문자 자체λ₯Ό μ œμ™Έν•˜κ³ λ„ κ·Έ λ³€μˆ˜μ™€ κ΄€λ ¨λœ μ—¬λŸ¬ 가지 정보, 즉 λ³€μˆ˜μ˜ μ €μž₯ μœ„μΉ˜ 등을 μœ„ν•΄ 49λ°”μ΄νŠΈκ°€ ν•„μš”ν•œ 것이닀.

 

☝️ 컴퓨터가 1λ°”μ΄νŠΈλ‘œ 문자λ₯Ό μ €μž₯ν•˜λŠ” 방법

Q. μ»΄ν“¨ν„°λŠ” 문자λ₯Ό μ–΄λ–»κ²Œ μ €μž₯ν•˜κ³  μ €μž₯ν•œ 값은 μ–΄λ–»κ²Œ μ²˜λ¦¬λ κΉŒμš”?

A. μš°μ„  μ»΄ν“¨ν„°λŠ” 문자λ₯Ό 직접 ν…μŠ€νŠΈλ‘œ μΈμ‹ν•˜μ§€ μ•Šκ³  μ΄μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ μ €μž₯ν•©λ‹ˆλ‹€. λ¬ΈμžλŠ” 1λ°”μ΄νŠΈ, 즉 8λΉ„νŠΈλΌκ³  ν–ˆμœΌλ‹ˆ 2의 8제곱만큼의 곡간에 λ¬Έμžμ— λŒ€ν•œ 정보가 μ €μž₯λ©λ‹ˆλ‹€. aλ₯Ό μ €μž₯ν•œλ‹€κ³  ν•˜λ©΄ 01001011처럼 λ³€ν™˜λ˜μ–΄ λ©”λͺ¨λ¦¬μ— μ €μž₯λ˜λŠ” λ°©μ‹μœΌλ‘œ 처리되고 μžˆμŠ΅λ‹ˆλ‹€. 

 

μ΄μ§„μˆ˜λ‘œ λ³€ν™˜λ˜λŠ” ν‘œμ€€ κ·œμΉ™μœΌλ‘œλŠ”…

- ASCII

- CP949

- MS949

- UTF-8

등이 μžˆμŠ΅λ‹ˆλ‹€. 그리고 μ΄λŸ¬ν•œ κ·œμΉ™μ„ 인코딩이라고 ν•©λ‹ˆλ‹€.

μ΄λŸ¬ν•œ κ·œμΉ™μ„ μ΄μš©ν•˜μ—¬ μˆ«μžμ™€ 문자λ₯Ό λ§΅ν•‘ν•˜λŠ” 것이 λ°”λ‘œ μš΄μ˜μ²΄μ œμ™€ μΈν„°ν”„λ¦¬ν„°μ˜ μ—­ν•  쀑 ν•˜λ‚˜μž…λ‹ˆλ‹€.

 

 

> λ¬Έμžμ—΄μ˜ 인덱싱과 μŠ¬λΌμ΄μ‹±

 

λ¬Έμžμ—΄κ³Ό λ¦¬μŠ€νŠΈλŠ” λͺ¨λ‘ μ‹œν€€μŠ€ μžλ£Œν˜•!

→ 즉, λ¬Έμžμ—΄μ€ λ¦¬μŠ€νŠΈμ™€ νŠΉμ§•μ΄ 거의 같은 μžλ£Œν˜•μž…λ‹ˆλ‹€.

→ λ”°λΌμ„œ λ¬Έμžμ—΄ λ˜ν•œ 인덱싱과 μŠ¬λΌμ΄μ‹±μ΄ κ°€λŠ₯ν•©λ‹ˆλ‹€!

 

<인덱싱>

a = "abcde"
print(a[0], a[4])
print(a[-1], a[-3])

 

<μŠ¬λΌμ΄μ‹±>

a = "Seoul Woman's University"
print(a[0:5], a[14:])
print(a[:])
print(a[-30:30])
print(a[::2], "AND", a[::-1])

 

 

> λ¬Έμžμ—΄μ˜ μ—°μ‚°

 

λ¬Έμžμ—΄λ„ λ‹€λ₯Έ λ³€μˆ˜μ™€ λ§ˆμ°¬κ°€μ§€λ‘œ 연산이 κ°€λŠ₯ν•©λ‹ˆλ‹€.

기본적으둜 리슀트의 μ—°μ‚°κ³Ό κ°™μŠ΅λ‹ˆλ‹€!

 

<μ—°μ‚°>

a = "poppy"
b = "love"
print(a + " " + b)
print(a * 2 + " " + b * 2)  #νŒŒν”ΌνŒŒν”Ό 럽럽

if 'y' in a: print(a)
else: print(b)

3번째 쀄 : λ¬Έμžμ—΄μ˜ λ§μ…ˆ μ—°μ‚°, 뢙이기

5번째 쀄 : λ¬Έμžμ—΄μ˜ κ³±μ…ˆ μ—°μ‚°, 두 번 좜λ ₯ν•˜κΈ°

7번째 쀄 : λ¬Έμžμ—΄μ˜ in μ—°μ‚°, νŠΉμ • λ¬Έμžκ°€ νŠΉμ • λ³€μˆ˜μ— λ“€μ–΄μžˆλŠ”μ§€ 확인

 

 

> λ¬Έμžμ—΄ ν•¨μˆ˜

 

- λ¬Έμžμ—΄μ„ λ‹€λ£° λ•Œ μœ μš©ν•œ λ¬Έμžμ—΄ ν•¨μˆ˜λ“€

- μ£Όμš” ν•¨μˆ˜ μ‹€μŠ΅

 

<upper / lower>

title = "SWU X LeeJeEun"
print(title.upper())
print(title.lower())

<title>

title = "SWU X LeeJeEun"
print(title.title())
print(title.capitalize())

title( ) : 각 λ‹¨μ–΄μ˜ μ•žκΈ€μžλ§Œ λŒ€λ¬Έμžλ‘œ λ³€κ²½

capitalize( ) : 첫 번째 κΈ€μžλ§Œ λŒ€λ¬Έμžλ‘œ λ³€κ²½

 

<count, isdigit, startswitch>

title = "SWU X LeeJeEun"
print(title.count("e"))
print(title.upper().count("e"))
print(title.isdigit())  # ν•΄λ‹Ή λ¬Έμžμ—΄μ΄ μˆ«μžμΈκ°€? 
print(title.startswith("e"))  # ν•΄λ‹Ή λ¬Έμžμ—΄λ‘œ μ‹œμž‘ν•˜λŠ”κ°€?

 

- 파이썬의 특수 문자 

λ¬Έμžμ—΄μ„ ν‘œν˜„ν•  λ•Œ “ “ λ‚˜ ‘ ‘ λ₯Ό μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμ—, λ¬Έμžμ—΄ μ•ˆμ— ν•΄λ‹Ή λ¬Έμžκ°€ ν¬ν•¨λ˜λ©΄ μ‚¬μš©ν•˜κΈ° μ–΄λ €μšΈ λ•Œκ°€ μžˆλ‹€.

→ ‘ , “λ₯Ό μ‚¬μš©ν•  경우 λ¬Έμžμ—΄μ΄ λ‹«νžˆμ§€ μ•Šμ•˜λ‹€κ³  νŒλ‹¨ν•˜κ³  였λ₯˜λ‘œ 좜λ ₯ν•  μˆ˜λ„ 있기 λ•Œλ¬Έμ΄λ‹€. ex) It’s OK

 

🧑 κ°€μž₯ μ‰¬μš΄ ν•΄κ²° 방법 : μž‘μ€λ”°μ˜΄ν‘œκ°€ λ“€μ–΄κ°„ λ¬Έμžμ—΄μ€ ν°λ”°μ˜΄ν‘œλ‘œ μ„ μ–Έν•˜κ³  ν°λ”°μ˜΄ν‘œκ°€ λ“€μ–΄κ°„ λ¬Έμžμ—΄μ€ μž‘μ€λ”°μ˜΄ν‘œλ‘œ μ„ μ–Έν•˜λŠ” 것 ex) a = “It’s OK”

 

πŸ’› λ‹€λ₯Έ 방법 : 파이썬의 특수문자 κΈ°λŠ₯ μ‚¬μš©

ex) a = ‘It\’s OK’

 

 


 

02 λ¬Έμžμ—΄ μ„œμ‹ 지정

λ¬Έμžμ—΄μ˜ ν˜•μ‹μ„ μ§€μ •ν•˜μ—¬ 좜λ ₯ν•˜λŠ” μ„œμ‹ 지정에 λŒ€ν•΄ λ°°μ›Œλ΄…μ‹œλ‹€!

> μ„œμ‹ μ§€μ •μ˜ κ°œλ…

 

print ν•¨μˆ˜λŠ”-

기본적으둜 λ³€μˆ˜ λ˜λŠ” 값을 콀마( , )둜 띄어쓰기 ν•˜μ—¬ 좜λ ₯ν•©λ‹ˆλ‹€.

κ·ΈλŸ¬λ‚˜ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜λ‹€ 보면 νŠΉμ •ν•œ ν˜•μ‹μœΌλ‘œ λ§žμΆ°μ„œ κ²°κ³Όλ₯Ό 좜λ ₯ν•΄μ•Ό ν•˜λŠ” κ²½μš°κ°€ λ°œμƒν•©λ‹ˆλ‹€.

ex) 톡화 λ‹¨μœ„, μ„Έ 자리 숫자 λ‹¨μœ„λ‘œ 띄어쓰기, % 좜λ ₯ λ“±

 

μ„œμ‹ 지정 : μ΄λ ‡κ²Œ λ‹€μ–‘ν•œ ν˜•μ‹μ— λ§žμΆ”μ–΄ 좜λ ₯ν•˜λŠ” 것을 μ„œμ‹ 지정이라고 ν•©λ‹ˆλ‹€.

 

 

> % μ„œμ‹κ³Ό format( ) ν•¨μˆ˜

print(1, 2, 3)
print("a" + " " + "b" + " " + "c")
print("%d %d %d" % (1, 2, 3))
print("{} {} {}".format("a", "b", "c"))

%λ₯Ό μ΄μš©ν•˜λŠ” % μ„œμ‹κ³Ό { }κ³Ό .format을 μ‚¬μš©ν•˜λŠ” format( ) ν•¨μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.

(μ•žμ— μž…μΆœλ ₯μ—μ„œ μƒμ„Έν•˜κ²Œ μ„€λͺ…ν–ˆλ˜ λ‚΄μš©μ΄λ‹ˆ κ°„λž΅ν•˜κ²Œ μ„€λͺ…ν•˜κ³  λ„˜μ–΄κ°€λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€…😊)

 

- % μ„œμ‹

  • ν˜•νƒœ : ‘%μžλ£Œν˜• % (κ°’)’
  • μ„œμ‹ μ’…λ₯˜

 

- format( ) ν•¨μˆ˜

  • ν˜•νƒœ : ‘{μžλ£Œν˜•}’.format(인수)
  • % μ„œμ‹κ³Ό 달리 μžλ£Œν˜•μ„ λ°”λ‘œ 지정해주지 μ•Šκ³  μˆœμ„œλŒ€λ‘œ λ³€μˆ˜κ°€ ν• λ‹Ήλœλ‹€λŠ” μž₯점이 μžˆμŠ΅λ‹ˆλ‹€.
print
("Product: {0}, Price per unit: {1:.2f}".format("Apple", 5.243))

.2f : μ†Œμˆ˜μ  λ‘˜μ§Έ μžλ¦¬κΉŒμ§€

 

 

> νŒ¨λ”©

 

파이썬의 μ„œμ‹ μ €μ • κΈ°λŠ₯μ—λŠ” μ—¬μœ  곡간을 μ§€μ •ν•˜μ—¬ κΈ€μž 배열을 λ§žμΆ”κ³ , μ†Œμˆ˜μ  자릿수λ₯Ό λ§žμΆ”λŠ” νŒ¨λ”©(padding) κΈ°λŠ₯이 μžˆμŠ΅λ‹ˆλ‹€.

 

- % μ„œμ‹μ˜ νŒ¨λ”©

print("%10d" % 12)
print("%-10d" % 12)
print("%10.3f" % 5.94343)
print("%10.2f" % 5.94343)
print("%-10.2f" % 5.94343)

이처럼 곡간을 λ¨Όμ € ν™•λ³΄ν•˜κ³  좜λ ₯이 λ©λ‹ˆλ‹€. 곡백을 μ‹œκ°ν™”ν•œλ‹€λ©΄ λ‹€μŒκ³Ό 같을 κ²ƒμž…λ‹ˆλ‹€.

→ μ†Œμˆ˜μ λ„ μžλ¦Ώμˆ˜μ— ν¬ν•¨λ©λ‹ˆλ‹€.

 

 

- format() ν•¨μˆ˜μ˜ νŒ¨λ”©

print("{0:>10s}".format("Apple"))
print("{0:<10s}".format("Apple"))

< λŠ” (μ’ŒμΈ‘μ„ κ°€λ¦¬ν‚€λ‹ˆ)쒌츑 정렬을, >λŠ” (μš°μΈ‘μ„ κ°€λ¦¬ν‚€λ‹ˆ)우츑 정렬을 λ‚˜νƒ€λƒ…λ‹ˆλ‹€.

즉, {0:>10s}λŠ” {0}μ—κ²Œ 곡간 10자리λ₯Ό ν™•λ³΄ν•˜κ³  μš°μΈ‘μ •λ ¬ ν•˜λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€.

 

μ‹€μˆ˜μ—μ„œλ„ μžλ¦Ώμˆ˜μ™€ μ†Œμˆ˜μ  자릿수λ₯Ό 지정할 수 μžˆμŠ΅λ‹ˆλ‹€.

print("{0}\n{1:>10.5f}".format("Apple", 5.243))
print("{0}\n{1:<10.5f}".format("Apple", 5.243))

{1:>10.5f} λŠ” {1}μ—κ²Œ 10자리λ₯Ό ν™•λ³΄ν•˜κ³  μ†Œμˆ˜μ  5번째 μžλ¦¬κΉŒμ§€ μš°μΈ‘μ •λ ¬ν•˜λΌλŠ” μ˜λ―Έμž…λ‹ˆλ‹€.