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

[3νŒ€/김경은] 1μ°¨μ‹œ 파이썬 μŠ€ν„°λ”” - μž…μΆœλ ₯

경은 2023. 3. 8. 23:58

데이터 과학을 μœ„ν•œ 파이썬 ν”„λ‘œκ·Έλž˜λ° ꡐ재λ₯Ό μ‚¬μš©ν•˜μ—¬ μž‘μ„±ν•œ κ°•μ˜μžλ£Œμž…λ‹ˆλ‹€.

1μ°¨μ‹œ_μž…μΆœλ ₯_κ°•μ˜μ•ˆ.pdf
0.65MB
1μ°¨μ‹œ_μž…μΆœλ ₯_과제.pdf
0.16MB

  • νŒŒμ΄μ¬μ΄λž€ ?
    • 1991년에 λ„€λœλž€λ“œμ˜ 귀도 반 λ‘œμ„¬μ΄ κ°œλ°œν•œ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄
    • κ³ μˆ˜μ€€ μ–Έμ–΄λ‘œ μ΄ν•΄ν•˜κ³  μ‚¬μš©ν•˜κΈ° μ‰¬μš΄ 언어이며 일반적인 개발이 λͺ©ν‘œμΈ 언어라 ν™•μž₯성이 높은 μ–Έμ–΄
     

  • 파이썬의 νŠΉμ§•
    • ν”Œλž«νΌ 독립적인 μ–Έμ–΄
      • ν”Œλž«νΌμ€ ν”νžˆ λ§ν•˜λŠ” 운영체제
      • μ–΄λ–€ μš΄μ˜μ²΄μ œλ“  상관없이 μ‚¬μš©ν•  수 μžˆλŠ” μ–Έμ–΄λ‘œ 이해
    • 인터프리터식 λŒ€ν™”ν˜• μ–Έμ–΄
      • 파이썬의 μ†ŒμŠ€μ½”λ“œκ°€ μ»΄ν“¨ν„°μ—μ„œ μ‹€ν–‰λ˜κΈ° μœ„ν•΄ 인터프리터 λ˜λŠ” μ»΄νŒŒμΌλŸ¬μ— μ˜ν•΄ ν•΄μ„λ˜κ³  ν•΄μ„λœ κ²°κ³Όκ°€ μš΄μ˜μ²΄μ œμ— 맞좰 κΈ°κ³„μ–΄λ‘œ λ³€ν™˜λ˜μ–΄ μ»΄ν“¨ν„°μ˜ λ©”λͺ¨λ¦¬μ™€ μ€‘μ•™μ²˜λ¦¬μž₯μΉ˜μ— μ €μž₯λ˜μ–΄ μ‹€ν–‰λ˜λŠ”λ° 인터프리터와 μ»΄νŒŒμΌλŸ¬κ°€ κ·Έ ν”„λ‘œκ·Έλž¨μ˜ μ’…λ₯˜λΌκ³  λ³Ό 수 μžˆλ‹€.
      • μ†ŒμŠ€μ½”λ“œμ˜ 해석을 μœ„ν•΄ μ‚¬μš©λ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ μ’…λ₯˜λ‘œ μ†ŒμŠ€μ½”λ“œλ₯Ό λ°”λ‘œ ν†΅μ—­ν•˜λŠ” μ–Έμ–΄λ₯Ό 말함
      • κ°„λ‹¨νžˆ μž‘μ„±λ˜κ³  λ©”λͺ¨λ¦¬κ°€ 적게 ν•„μš”ν•˜λ‹€λŠ” μž₯점
      • 컴파일러
        • μ†ŒμŠ€μ½”λ“œ 전체λ₯Ό λ²ˆμ—­ν•œ ν›„ μ‹€ν–‰ν•˜λŠ” μ–Έμ–΄
        • μ†ŒμŠ€μ½”λ“œλ₯Ό ν˜„μž¬ μ‹€ν–‰λ˜κ³  μžˆλŠ” μš΄μ˜μ²΄μ œμ— 맞좰 λ²ˆμ—­ν•œ ν›„ νŒŒμΌμ„ λ§Œλ“¦, ν•΄λ‹Ή ν”Œλž«νΌμ—μ„œλ§Œ μ‹€ν–‰ κ°€λŠ₯
           κ΅¬λΆ„                               μ»΄νŒŒμΌλŸ¬                                                                       μΈν„°ν”„리터
        μž‘λ™λ°©μ‹ μ†ŒμŠ€μ½”λ“œλ₯Ό κΈ°κ³„μ–΄λ‘œ λ¨Όμ € λ²ˆμ—­ν•˜κ³  ν•΄λ‹Ήν”Œλž«νΌμ— μ΅œμ ν™”λœ μƒνƒœλ‘œ ν”„λ‘œκ·Έλž¨μ„ μ‹€ν–‰ λ³„λ„μ˜ λ²ˆμ—­ κ³Όμ • 없이 μ†ŒμŠ€μ½”λ“œλ₯Ό μ‹€ν–‰ μ‹œμ μ— ν•΄μ„ν•˜μ—¬ 컴퓨터가 λ°”λ‘œ 처리
        μž₯점 μ‹€ν–‰ 속도가 빠름 κ°„λ‹¨νžˆ μž‘μ„±λ˜κ³  λ©”λͺ¨λ¦¬κ°€ 적게 ν•„μš”
        단점 ν•œλ²ˆμ— λ§Žμ€ λ©”λͺ¨λ¦¬ ν•„μš” 싀행속도 느림
        μ£Όμš”μ–Έμ–΄ C,Java, C++,C# 파이썬, 슀칼라
    • 객체지ν–₯적 μ–Έμ–΄
      • ν•΄λ‹Ή ν”„λ‘œκ·Έλž¨μ΄ ν•΄κ²°ν•΄μ•Όν•  문제의 κ΅¬μ„±μš”μ†Œλ₯Ό μš”μ†Œλ³„λ‘œ μ •μ˜ν•œ λ‹€μŒ μš”μ†Œμ˜ κΈ°λŠ₯κ³Ό 정보λ₯Ό ν”„λ‘œκ·Έλž˜λ°ν•œ ν›„ μš”μ†Œλ“€μ„ κ²°ν•©ν•˜λŠ” λ°©μ‹μœΌλ‘œ ν”„λ‘œκ·Έλž¨μ„ μž‘μ„±ν•˜λŠ” 것을 말함
      • ν•œλ²ˆ λ§Œλ“€μ–΄μ§„ μš”μ†Œλ“€ 즉 κ°μ²΄λŠ” μž¬μ‚¬μš©ν•  수 μžˆλŠ” μž₯점
    • 동적 타이핑 μ–Έμ–΄
      • 파이썬이 λ‹€λ₯Έ 언어와 κ°€μž₯ 큰 차이λ₯Ό λ³΄μ΄λŠ” νŠΉμ§•
      • ν”„λ‘œκ·Έλž¨μ˜ μ‹€ν–‰ μ‹œμ μ—μ„œ 각 ν”„λ‘œκ·Έλž¨ λ³€μˆ˜μ˜ νƒ€μž…μ„ κ²°μ •ν•˜λŠ” 언어이닀.
      • μ†λ„λŠ” λŠλ¦¬μ§€λ§Œ 자유둭게 λ©”λͺ¨λ¦¬ 곡간을 ν• λ‹Ήλ°›κ³  μ‚¬μš©ν•˜λŠ” 것이 κ°€λŠ₯
    • λ§Žμ€ μ‚¬λžŒλ“€μ˜ μ‚¬μš©
     

  • 파이썬의 μž₯점
    • 쉽고 간단함
      • print()와 같이 직관적인 μ½”λ“œλ‘œ λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° 언어보닀 쉬움

Python

print("Hello World!")

Java

class HelloWorldApp {
    public stastic void main(String[]args) {
        System.out.println("Hello World!");
    }
]
  • λ‹€μ–‘ν•œ 라이브러리 제곡
    • λ‹€μ–‘ν•œ 라이브러리λ₯Ό μ œκ³΅ν•˜μ—¬ ν™œμš© λ²”μœ„κ°€ λ„“μŒ
    • κ°œλ°œμžλ“€μ΄ λ§Œλ“€μ–΄ 놓은 λ§Žμ€ λͺ¨λ“ˆκ³Ό νŒ¨ν‚€μ§€λ₯Ό μ‰½κ²Œ μ‚¬μš©κ°€λŠ₯
  • μ•„λ‚˜μ½˜λ‹€

κ³Όν•™ κ³„μ‚°μš© λͺ¨λ“ˆμ„ λ¬Άμ–΄ νŒ¨ν‚€μ§€λ‘œ μ œκ³΅ν•˜λŠ” 툴

  • νŒŒμ΄μ°Έμ΄λž€?

  • IDE : Integrated Development Environment, ν†΅ν•©κ°œλ°œν™˜κ²½
  • 코딩을 μœ„ν•œ 톡합 개발 ν™˜κ²½μœΌλ‘œ νŽΈμ§‘, κ²°κ³Ό 좜λ ₯, 디버깅 λ“±μ˜ 파이썬 코딩을 μœ„ν•œ λ‹€μ–‘ν•œ κΈ°λŠ₯을 제곡
  • 파이참 μž₯점

  • ν•˜μ΄λΌμ΄νŠΈ κΈ°λŠ₯

μ½”λ“œμ— λ‹€μ–‘ν•œ 색이 μžˆμ–΄ 보기 μ‰½λ‹€λŠ” μž₯점이 있고 μ½”λ“œ μž‘μ„±μ—μ„œ μžλ™μ™„μ„± κΈ°λŠ₯으둜 보닀 νŽΈν•˜κ²Œ μ½”λ“œλ₯Ό μž‘μ—…ν•  수 있음

  • 디버그

μ‹€μ‹œκ°„μœΌλ‘œ λ¬Έλ²•μ˜€λ₯˜λ₯Ό μ•Œλ €μ£Όκ³  λ””λ²„κ·Έλ‘œ 였λ₯˜λ₯Ό μž‘μ•„μ€Œ

 

  • ν™”λ©΄ μž…μΆœλ ₯
    • ν‘œμ€€ μž…λ ₯ ν•¨μˆ˜ : input() ν•¨μˆ˜
    • μ½˜μ†”μ°½μ—μ„œ μž…λ ₯을 λ°›κΈ° μœ„ν•΄ μ‚¬μš©
print("Enter your name:')
somebody = input()
print("Hi", somebody, "How are you today?")
Enter your name:                       #μž…λ ₯λŒ€κΈ°
Kim Gyeung Ean                         #μ‚¬μš©μžμž…λ ₯
Hi Kim Gyeung Ean How are you today?   #좜λ ₯

 

  • ν‘œμ€€ 좜λ ₯ ν•¨μˆ˜ : print() ν•¨μˆ˜
>>> print("Hello World!", "Hello Again!")    #콀마 μ‚¬μš©
Hello World! Hello Again!                    #μ‹€ν–‰ μ‹œ 두문μž₯이 μ—°κ²°λ˜μ–΄ 좜λ ₯

콀마λ₯Ό μ‚¬μš©ν•˜λ©΄ "Hello World!" 와 "Hello Again!" 사이에 ν•œ 칸을 띄고 화면에 좜λ ₯

μ½€λ§ˆλŠ” λ³€μˆ˜μ˜ μžλ£Œν˜•κ³Ό 관계없이 좜λ ₯ κ°€λŠ₯

 

  • λ¬Έμžμ—΄
  • λ¬Έμžμ—΄μ€ μ–‘μͺ½μ„ 큰 λ”°μ˜΄ν‘œ(”) λ‚˜ μž‘μ€λ”°μ˜΄ν‘œ(’)둜 감싸야 함
  • 큰 λ”°μ˜΄ν‘œμ™€ μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό μ„žμ–΄μ„œ μ‚¬μš© λΆˆκ°€
>>> print('"μ•ˆλ…•ν•˜μ„Έμš”"라고 λ§ν–ˆμŠ΅λ‹ˆλ‹€.')

"μ•ˆλ…•ν•˜μ„Έμš”" 라고 λ§ν–ˆμŠ΅λ‹ˆλ‹€.
  • μž‘μ€ λ”°μ˜΄ν‘œκ°€ ν¬ν•¨λœ λ¬Έμž₯은 큰 λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯ν•  수 있고 큰 λ”°μ˜΄ν‘œκ°€ ν¬ν•¨λœ λ¬Έμž₯은 μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•˜μ—¬ 좜λ ₯ν•  수 있음
>>> print("μ„œμšΈμ—¬μž"+"λŒ€ν•™κ΅")

μ„œμšΈμ—¬μžλŒ€ν•™κ΅
  • λ¬Έμžμ—΄μ€ λ”ν•˜κΈ° 연산을 톡해 λ¬Έμžμ—΄μ„ λΆ™μ—¬ 좜λ ₯ν•˜λŠ” 것이 κ°€λŠ₯
>>> print("학생"*3)

학생학생학생
  • λ¬Έμžμ—΄μ€ κ³±ν•˜κΈ° μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μž…λ ₯ν•œ μ •μˆ˜λ§Œ 반볡 좜λ ₯이 κ°€λŠ₯
  • λ”ν•˜κΈ°μ™€ κ³±ν•˜κΈ° μ΄μ™Έμ˜ μ—°μ‚°μžλŠ” μ‚¬μš© λΆˆκ°€λŠ₯

 

  • μ΄μŠ€μΌ€μ΄ν”„ 문자 (escape character)
      • μ—­μŠ¬λž˜μ‹œ κΈ°ν˜Έμ™€ ν•¨κ»˜ μ‘°ν•©ν•΄μ„œ μ‚¬μš©ν•˜λŠ” νŠΉμˆ˜ν•œ 문자
      • \” : 큰 λ”°μ˜΄ν‘œλ₯Ό 의미
      • \’ : μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό 의미
      • \n : μ€„λ°”κΏˆ 의미
      • \t : νƒ­ 의미
      • \\ : μ—­μŠ¬λž˜μ‹œλ₯Ό 의미
>>> print("μ•ˆλ…•ν•˜μ„Έμš”\\nμ•ˆλ…•ν•˜μ„Έμš”")
μ•ˆλ…•ν•˜μ„Έμš”
μ•ˆλ…•ν•˜μ„Έμš”
>>> print("μ•ˆλ…•ν•˜μ„Έμš”\\tμ•ˆλ…•ν•˜μ„Έμš”")
μ•ˆλ…•ν•˜μ„Έμš” μ•ˆλ…•ν•˜μ„Έμš”

 

  • λ”°μ˜΄ν‘œμ™€ μ΄μŠ€μΌ€μ΄ν”„ 문자
  • μž‘μ€ λ”°μ˜΄ν‘œ(’) : 문자 데이터λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 기호
  • μ΄μŠ€μΌ€μ΄ν”„ 문자(\’) : μž‘μ€ λ”°μ˜΄ν‘œ 자체λ₯Ό 문자 λ°μ΄ν„°λ‘œ μ‚¬μš©
  • 큰 λ”°μ˜΄ν‘œ(”) : 문자 데이터λ₯Ό λ§Œλ“€κΈ° 이해 μ‚¬μš©ν•˜λŠ” 기호

input ν•¨μˆ˜μ— λ°”λ‘œ μ§€μ‹œλ¬Έ λ„£κΈ°

>>> temperature = float(input("μ˜¨λ„λ₯Ό μž…λ ₯ν•˜μ„Έμš”:"))
>>> print(temperature)

μ˜¨λ„λ₯Ό μž…λ ₯ν•˜μ„Έμš”: 103
103.0

input ν•¨μˆ˜λ₯Ό μ‚¬μš©ν• λ•Œ μ£Όμ˜ν•  점은 input ν•¨μˆ˜κ°€ 값을 μž…λ ₯λ°›μœΌλ©΄ κ·Έ κ°’μ˜ μžλ£Œν˜•μ€ λ¬Έμžν˜•μ΄ λœλ‹€.

float(input("μ˜¨λ„λ₯Ό μž…λ ₯ν•˜μ„Έμš”:")) λŠ” λ¬Έμžμ—΄λ‘œ 받은 데이터λ₯Ό λ°”λ‘œ μ‹€μˆ˜ν˜•μœΌλ‘œ μ „ν™˜ν•˜λŠ” μ½”λ“œλ‘œ, temperature λ³€μˆ˜μ— λ“€μ–΄κ°„ 값은 μ‹€μˆ˜ν˜•μ΄ 됨

 

  • split() ν•¨μˆ˜
    • μž…λ ₯값을 두 개 μ΄μƒμœΌλ‘œ ꡬ뢄이 κ°€λŠ₯
    name = "my name is kim"
    name.split()
    print(name.split())
    
    >> ['my', 'name', 'is' ,'kim'] #띄어쓰기λ₯Ό κΈ°μ€€μœΌλ‘œ λ¬Έμž₯을 λ‚˜λˆ„μ–΄ 쀌
    
    → ν•œ λ¬Έμžμ—΄μ„ λ‚˜λˆ„μ–΄ 리슀트둜 ꡬ뢄

 πŸ’‘ λ³€μˆ˜1, λ³€μˆ˜2 ,… = input().split()

>>> num1, num2 = input("숫자 두 개λ₯Ό 곡백으둜 ꡬ뢄해 μž…λ ₯").split()
숫자 두 개λ₯Ό 곡백으둜 ꡬ뢄해 μž…λ ₯
>>> print(num1, num2)
5 3 

split 둜 κ΅¬λΆ„λ˜λŠ” λ¬ΈμžλŠ” 리슀트 ν˜•νƒœλ‘œ μ €μž₯

→ μ •μˆ˜ν˜• λ³€ν™˜μ„ ν•  수 μ—†μŒ

→ map ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ λ‹€λ₯Έ μžλ£Œν˜•μœΌλ‘œ λ³€ν™˜ν•΄μ•Ό 함

 

  • μ‹€μŠ΅

화씨 μ˜¨λ„ λ³€ν™˜κΈ°

μ„­μ”¨μ˜¨λ„λ₯Ό ν™”μ”¨μ˜¨λ„λ‘œ λ³€ν™˜μ‹œμΌœ μ£ΌλŠ” ν”„λ‘œκ·Έλž¨

μ„­μ”¨μ˜¨λ„ : 물의 μ–΄λŠ”μ μ„ 0’C, λ“λŠ”μ μ„ 100’C둜 ν•˜μ—¬ 이λ₯Ό κΈ°μ€€μœΌλ‘œ κ·Έ 사이 간격을 100으둜 λ‚˜λˆˆ μ˜¨λ„

ν™”μ”¨μ˜¨λ„ : 물의 μ–΄λŠ”μ μ„ 32’F, λ“λŠ” 점을 212’F 둜 ν•˜μ—¬ 이λ₯Ό κΈ°μ€€μœΌλ‘œ κ·Έ 사이 간격을 180으둜 λ‚˜λˆˆ μ˜¨λ„

μ„­μ”¨μ˜¨λ„μ™€ ν™”μ”¨μ˜¨λ„μ˜ λ³€ν™˜ 곡식

πŸ’‘ ν™”μ”¨μ˜¨λ„(’F) = (μ„­μ”¨μ˜¨λ„(’C) * 1.8) +32

# μ‹€ν–‰ κ²°κ³Ό
λ³Έ ν”„λ‘œκ·Έλž¨μ€ μ„­μ”¨μ˜¨λ„λ₯Ό ν™”μ”¨μ˜¨λ„λ‘œ λ³€ν™˜ν•˜λŠ” ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.
λ³€ν™˜ν•˜κ³  싢은 μ„­μ”¨μ˜¨λ„λ₯Ό μž…λ ₯ν•˜μ„Έμš”.
32.2
μ„­μ”¨μ˜¨λ„ : 32.2
ν™”μ”¨μ˜¨λ„ : 89.96

 

  • μ½”λ“œ
print("λ³Έ ν”„λ‘œκ·Έλž¨μ€ μ„­μ”¨μ˜¨λ„λ₯Ό ν™”μ”¨μ˜¨λ„λ‘œ λ³€ν™˜ν•˜λŠ” ν”„λ‘œκ·Έλž¨μž…λ‹ˆλ‹€.")
print("λ³€ν™˜ν•˜κ³  싢은 μ„­μ”¨μ˜¨λ„λ₯Ό μž…λ ₯ν•˜μ„Έμš”.")

celsius = input()
fahrenheit = (float(celsius) * 1.8) + 32

print("μ„­μ”¨μ˜¨λ„:", celsius)
print("ν™”μ”¨μ˜¨λ„:", fahrenheit)

1,2ν–‰μ—μ„œλŠ” print() ν•¨μˆ˜λ₯Ό μ΄μš©ν•˜μ—¬ μ‚¬μš©μžμ—κ²Œ 보이게 ν•  λ¬Έμž₯을 μž…λ ₯ν•œλ‹€.

4ν–‰μ—μ„œ μ‚¬μš©μžκ°€ μ„­μ”¨μ˜¨λ„λ₯Ό μž…λ ₯ν•  수 μžˆλ„λ‘ input() ν•¨μˆ˜λ₯Ό μ‚¬μš©

μ‚¬μš©μžκ°€ μž…λ ₯ν•œ κ²°κ³ΌλŠ” μ €μž₯ν•΄μ•Ό ν•˜λ―€λ‘œ celsius λ³€μˆ˜ μ‚¬μš©

5ν–‰μ—μ„œλŠ” μž…λ ₯λ˜λŠ” 값이 λ¬Έμžμ—΄μ΄κΈ° λ•Œλ¬Έμ— μ‹€μˆ˜ν˜•μœΌλ‘œ λ³€ν™˜ν•˜κΈ° μœ„ν•΄ float()ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ μžλ£Œν˜•μ„ λ³€ν™˜

μž…λ ₯된 μ„­μ”¨μ˜¨λ„κ°’μ„ ν™”μ”¨μ˜¨λ„κ°’μœΌλ‘œ λ³€ν™˜

λ³€ν™˜ 곡식인 ‘ν™”μ”¨μ˜¨λ„ = (μ„­μ”¨μ˜¨λ„*1.8) + 32’ λ₯Ό μ‚¬μš©

μ„­μ”¨μ˜¨λ„ → celsius λ³€μˆ˜

ν™”μ”¨μ˜¨λ„ → fahrenheit λ³€μˆ˜

λ§ˆμ§€λ§‰μœΌλ‘œ print() ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•΄ λ³€μˆ˜λ“€μ„ 좜λ ₯ν•˜κ³  μ™„μ„±