🐠 Public/web

μ›Ή μ‚¬μ΄νŠΈ μ œμž‘_파이썬 기초 정리

SONOTREE 2024. 8. 23. 00:57

파이썬 κΈ°μ΄ˆμ— λŒ€ν•œ 이해

  • 파이썬 κ°œλ…
  • 인터프리터 
  • λ³€μˆ˜ 및 μžλ£Œν˜•(리슀트, νŠœν”Œ, λ”•μ…”λ„ˆλ¦¬ ν•„μˆ˜)
  • μ œμ–΄λ¬Έ 및 반볡문(이쀑 반볡문 포함)
  • ν•¨μˆ˜(lamdaν•¨μˆ˜ 포함)
  • 클래슀 κ°œλ…
  • λͺ¨λ“ˆ νŒ¨ν‚€μ§€ κ°œλ…
  • μ—°μ‚°μž(비ꡐ, μ‚°μˆ , λΉ„νŠΈ λ“± λͺ¨λ“  μ—°μ‚°μž 포함)
  • 파일 μž…μΆœλ ₯

 

1. νŒŒμ΄μ¬μ΄λž€ 무엇인가?

1.1. νŒŒμ΄μ¬μ΄λž€?

  귀도 반 λ‘œμ„¬(Guido Van Rossum)이 κ°œλ°œν•œ 인터프리터 μ–Έμ–΄. 파이썬의 사전적 μ˜λ―ΈλŠ”, κ³ λŒ€ 신화에 λ‚˜μ˜€λŠ” 파λ₯΄λ‚˜μ†ŒμŠ€ μ‚°μ˜ 동꡴에 μ‚΄λ˜ 큰 뱀을 λœ»ν•˜λ©° μ•„ν΄λ‘œ 신이 λΈνŒŒμ΄μ—μ„œ νŒŒμ΄μ¬μ„ ν‡΄μΉ˜ν–ˆλ‹€λŠ” 이야기가 μ „ν•΄μ§€κ³  μžˆλ‹€.

 

  파이썬 ν”„λ‘œκ·Έλž¨μ€ 곡동 μž‘μ—…κ³Ό μœ μ§€ λ³΄μˆ˜κ°€ 맀우 쉽고 νŽΈν•˜λ‹€. μΈμŠ€νƒ€κ·Έλž¨, λ“œλ‘­λ°•μŠ€, ꡬ글 등이 파이썬으둜 μž‘μ„±λœ 많이 μ•Œλ €μ§„ μ˜ˆλ“€μ΄λ‹€.

 

 

 

1.2. 파이썬의 νŠΉμ§•

  ν”„λ‘œκ·Έλž˜λ°μ΄λž€ 인간이 μƒκ°ν•˜λŠ” 것을 컴퓨터에 μ§€μ‹œν•˜λŠ” ν–‰μœ„λΌκ³  ν•  수 μžˆλ‹€. νŒŒμ΄μ¬μ€ λ‹€λ₯Έ ν”„λ‘œκ·Έλž˜λ° 언어보닀 μ‚¬λžŒμ΄ μƒκ°ν•˜λŠ” 방식을 κ·ΈλŒ€λ‘œ 잘 ν‘œν˜„ν•˜λŠ” 언어이닀.  ν”„λ‘œκ·Έλž¨μ„ λͺ¨λ₯΄λ”라도 μ§κ΄€μ μœΌλ‘œ 무엇을 λœ»ν•˜λŠ”μ§€ μ•Œ 수 μžˆλ‹€.

if 4 in [1,2,3,4]
print('4κ°€ μžˆμŠ΅λ‹ˆλ‹€.')

 

  λ˜ν•œ νŒŒμ΄μ¬μ€ λ‹€λ₯Έ 언어에 λΉ„ν•΄ 문법도 μ‰¬μš΄νŽΈμ΄λ‹€. μžλ£Œν˜•, ν•¨μˆ˜, 클래슀 λ§Œλ“œλŠ” 법 등을 μ΅νžˆλŠ”λ° 정말 μ‹œκ°„μ΄ μ˜€λž˜κ±Έλ¦¬μ§€ μ•ŠλŠ”λ‹€.

 

  μ˜€ν”ˆ μ†ŒμŠ€(Open Source)λž€, μ €μž‘κΆŒμžκ°€ μ†ŒμŠ€ μ½”λ“œλ₯Ό κ³΅κ°œν•˜μ—¬ λˆ„κ΅¬λ‚˜ 별닀λ₯Έ μ œν•œ 없이 자유둭게 μ‚¬μš©.볡제.배포.μˆ˜μ •ν•  수 μžˆλŠ” μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ˜λ―Έν•œλ‹€. νŒŒμ΄μ¬μ€ μ˜€ν”ˆμ†ŒμŠ€μ΄λ‹€.

 

  νŒŒμ΄μ¬μ€ μ‹œμŠ€ν…œ ν”„λ‘œκ·Έλž˜λ°μ΄λ‚˜ ν•˜λ“œμ›¨μ–΄ μ œμ–΄μ™€ 같은 맀우 λ³΅μž‘ν•˜κ³  반볡 연산이 λ§Žμ€ ν”„λ‘œκ·Έλž¨μ„ λ§Œλ“œλŠ” κ²ƒκ³ΌλŠ” μ–΄μšΈλ¦¬μ§€ μ•ŠλŠ”λ‹€. λŒ€μ‹  C와 ν•¨κ»˜ν•˜λ©° λΉ λ₯Έ μ‹€ν–‰ 속도가 ν•„μš”ν•œ 뢀뢄은 C둜 λ§Œλ“€κ³  λΌˆλŒ€λŠ” 파이썬이 λ§Œλ“€μ–΄μ„œ... 이런 λ°©μ‹μœΌλ‘œ 많이 μ‚¬μš©λœλ‹€. νŒŒμ΄μ¬μ€ C와 μ°°λ–‘κΆν•©μ΄λΌλŠ” 말도 μžˆλ‹€.

 

  νŒŒμ΄μ¬μ€ κ°„κ²°ν•˜λ‹€. Perlκ³Ό 같은 μ–Έμ–΄κ°€ 100κ°€μ§€ λ°©λ²•μœΌλ‘œ ν•˜λ‚˜μ˜ 일을 μ²˜λ¦¬ν•  수 μžˆλ‹€λ©΄, νŒŒμ΄μ¬μ€ κ°€μž₯ 쒋은 방법 1κ°€μ§€λ§Œ μ‚¬μš©ν•˜λŠ” 것을 μ„ ν˜Έν•œλ‹€. μ΄λŸ¬ν•œ 이유둜 곡동 μž‘μ—…κ³Ό μœ μ§€ λ³΄μˆ˜κ°€ μ•„μ£Ό 쉽고 νŽΈν•˜λ‹€.

 

languages = ['python', 'perl', 'c', 'java']

for lang in languages:
    if lang in ['python', 'perl']:
        print("%s need interpreter" % lang)
    elif lang in ['c', 'java']:
        print("%s need compiler" % lang)
    else:
        print("should not reach here")

-> languagesλΌλŠ” 리슀트λ₯Ό λ§Œλ“ λ‹€

-> for문을 μ‚¬μš©ν•΄  languages λ¦¬μŠ€νŠΈμ— ν¬ν•¨λœ 각 단어 lang에 λŒ€ν•΄ μˆœνšŒν•œλ‹€.

 

 

 

1.3. 파이썬으둜 무엇을 ν•  수 μžˆμ„κΉŒ?

  μ–΄λ–€ ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄κ°€ μ–΄λ–€ 일에 νš¨μœ¨μ μΈμ§€λ₯Ό μ•ˆλ‹€λ©΄, ν”„λ‘œκ·Έλž˜λ¨Έμ˜ 생산성은 크게 μ¦κ°€ν•œλ‹€. 파이썬으둜 ν•  수 μžˆλŠ” 일과 μ—†λŠ” 일을 μ•Œμ•„λ³΄μž

 

  μœ ν‹Έλ¦¬ν‹°λž€, 컴퓨터 μ‚¬μš©μ— 도움을 μ£ΌλŠ” μ—¬λŸ¬ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό λ§ν•œλ‹€. νŒŒμ΄μ¬μ€ 운영체제의 μ‹œμŠ€ν…œ λͺ…λ Ήμ–΄λ₯Ό μ‚¬μš©ν•  수 μžˆλŠ” 각쒅 도ꡬλ₯Ό κ°–μΆ”κ³  있기 λ•Œλ¬Έμ— 이λ₯Ό λ°”νƒ•μœΌλ‘œ κ°–κ°€μ§€ μ‹œμŠ€ν…œ μœ ν‹Έλ¦¬ν‹°λ₯Ό λ§Œλ“œλŠ” 데 μœ λ¦¬ν•˜λ‹€.

 

  GUI(Graphic User Interface) ν”„λ‘œκ·Έλž˜λ°μ΄λž€ μ‰½κ²Œ 말해 화면에 또 λ‹€λ₯Έ μœˆλ„μš° 창을 λ§Œλ“€κ³  κ·Έ 창에 ν”„λ‘œκ·Έλž¨μ„ λ™μž‘μ‹œν‚¬ 수 μžˆλŠ” λ©”λ‰΄λ‚˜ λ²„νŠΌ, κ·Έλ¦Ό 등을 μΆ”κ°€ν•˜λŠ” 것이닀.

 

  νŒŒμ΄μ¬μ€ μ ‘μ°©(glue) 언어라고도 λΆ€λ₯΄λŠ”λ°, κ·Έ μ΄μœ λŠ” λ‹€λ₯Έ 언어와 잘 μ–΄μšΈλ € κ²°ν•©ν•΄μ„œ μ‚¬μš©ν•  수 있기 λ•Œλ¬Έμ΄λ‹€. C, C++λ“±. 이외에도 λ°μ΄ν„°λ² μ΄μŠ€ ν”„λ‘œκ·Έλž˜λ°, 데이터 뢄석, 사물 인터넷 등에 ν™œμš©ν•  수 μžˆλ‹€.

 

  νŒŒμ΄μ¬μ€ μ‹œμŠ€ν…œκ³Ό λ°€μ ‘ν•œ ν”„λ‘œκ·Έλž˜λ° μ˜μ—­μ˜ μ—„μ²­λ‚œ 횟수의 반볡과 연산이 ν•„μš”ν•œ ν”„λ‘œκ·Έλž¨ λ˜λŠ” 데이터 μ••μΆ• μ•Œκ³ λ¦¬μ¦˜ 개발 ν”„λ‘œκ·Έλž¨ 등을 λ§Œλ“œλŠ”λ° μ‚¬μš©ν•˜κΈ°λŠ” νž˜λ“€λ‹€. λ˜ν•œ λͺ¨λ°”일 ν”„λ‘œκ·Έλž˜λ°, 예λ₯Ό λ“€μ–΄ μ•ˆλ“œλ‘œμ΄λ“œ/아이폰 앱을 κ°œλ°œν•˜λŠ” 것은 아직 μ–΄λ ΅λ‹€.

 

 

 

1.4. 파이썬 λ‘˜λŸ¬λ³΄κΈ°

 

μœ„μ™€ 같은 창을 '파이썬 λŒ€ν™”ν˜• 인터프리터'라고 λΆ€λ₯Έλ‹€. μΈν„°ν”„λ¦¬ν„°λž€, μ‚¬μš©μžκ°€ μž…λ ₯ν•œ μ†ŒμŠ€ μ½”λ“œλ₯Ό μ‹€ν–‰ν•˜λŠ” ν™˜κ²½μ„ λœ»ν•œλ‹€.

-> '파이썬 λŒ€ν™”ν˜• 인터프리터'λŠ” κ°„λ‹¨νžˆ '파이썬 μ…Έ'이라고도 λΆ€λ₯Έλ‹€

-> '>>>'λŠ” ν”„λ‘¬ν”„νŠΈ(prompt)라고 ν•œλ‹€.

 

 

<반볡문-for>

for a in [1,2,3]:
    print(a)

-> 리슀트의 μ•žμ—μ„œλΆ€ν„° ν•˜λ‚˜μ”© κΊΌμž¬μ–΄ a λ³€μˆ˜μ— λŒ€μž…ν•œ ν›„ print(a)λ₯Ό μˆ˜ν–‰ν•œλ‹€.

 

 

<ν•¨μˆ˜ μ‚¬μš©>

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

print(add(3,4))

 

  μ˜ˆμ•½μ–΄λž€, ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄μ—μ„œ 이미 문법적인 μš©λ„λ‘œ μ‚¬μš©ν•˜κ³  μžˆλŠ” 단어λ₯Ό λ§ν•œλ‹€. defλŠ” ν•¨μˆ˜λ₯Ό λ§Œλ“€ λ•Œ μ‚¬μš©ν•˜λŠ” μ˜ˆμ•½μ–΄λ‹€. 

 

+) IDLE μ…Έ μ°½(Shell Window): IDLE μ—λ””ν„°μ—μ„œ μ‹€ν–‰ν•œ ν”„λ‘œκ·Έλž¨μ˜ κ²°κ³Όκ°€ ν‘œμ‹œλ˜λŠ” 창으둜써 파이썬 μ…Έκ³Ό λ™μΌν•œ κΈ°λŠ₯을 μˆ˜ν–‰ν•œλ‹€. IDLE을 μ‹€ν–‰ν•˜λ©΄ κ°€μž₯ λ¨Όμ € λ‚˜νƒ€λ‚˜λŠ” 창이닀.

+) IDLE 에티터 μ°½(Editor Window): IDLE 에티터가 μ‹€ν–‰λ˜λŠ” 창이닀.

 

+)  μœˆλ„μš° ν‚€ + R 그리고 cmdλ₯Ό 치면 λͺ…λ Ή ν”„λ‘¬ν”„νŠΈ 창이 μ—΄λ¦°λ‹€. μ‹€λ¬΄μ—μ„œλŠ” μ—¬κΈ°μ„œ νŒŒμ΄μ¬μ„ 자주 μ‚¬μš©ν•œλ‹€. λΉ„μ£Όμ–Ό μŠ€νŠœλ””μ˜€ μ½”λ“œ, 파이참 λ“±μ˜ 에디터도 μžˆμœΌλ‹ˆ μ‚¬μš©ν•΄λ³΄μž.


2. 파이썬 ν”„λ‘œκ·Έλž˜λ°μ˜ 기초, μžλ£Œν˜•

2.1. μˆ«μžν˜•

-μ •μˆ˜ν˜•(Integer)

  μ–‘μ˜ μ •μˆ˜, 0, 음의 μ •μˆ˜

 

-μ‹€μˆ˜ν˜•(Floating-point)

  μ†Œμˆ˜μ μ΄ ν¬ν•¨λœ 숫자λ₯Ό μ˜λ―Έν•œλ‹€. '컴퓨터식 μ§€μˆ˜ ν‘œν˜„ 방식'으둜 νŒŒμ΄μ¬μ—μ„œλŠ” 4.2e10 or 4.2E10 처럼 ν‘œν˜„ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 각각은  4.2 * 10^10을 μ˜λ―Έν•œλ‹€. 4.2e-10은 4.2 * 10^-10을 μ˜λ―Έν•œλ‹€.

 

-8μ§„μˆ˜μ™€ 16μ§„μˆ˜

  8μ§„μˆ˜(Octal)λ₯Ό λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” μˆ«μžκ°€ 0o λ˜λŠ” 0O둜 μ‹œμž‘ν•˜λ©΄ λœλ‹€. 16μ§„μˆ˜(Hexadecimal)을 λ§Œλ“€κΈ° μœ„ν•΄μ„œλŠ” 0x둜 μ‹œμž‘ν•˜λ©΄ λœλ‹€. 8μ§„μˆ˜μ™€ 16μ§„μˆ˜λŠ” νŒŒμ΄μ¬μ—μ„œ 잘 μ“°μ΄μ§€λŠ” μ•ŠλŠ”λ‹€. ex. 0o177, 0x8ff

 

 

 

2.1.1. μ‚¬μΉ™μ—°μ‚°μž

  • **: x의 yμ œκ³±μ„ λ‚˜νƒ€λ‚Έλ‹€. 2 ** 4 = 16
  • %: λ‚˜λˆ—μ…ˆ ν›„ λ‚˜λ¨Έμ§€λ₯Ό λ°˜ν™˜ν•˜λŠ” μ—°μ‚°μž. 7 % 3 = 1, 3 % 7 = 3
  • //: λ‚˜λˆ—μ…ˆ ν›„ λͺ«μ„ λ°˜ν™˜ν•˜λŠ” μ—°μ‚°μž. 7 // 4 =1
  • /: λ‚˜λˆ„κΈ° μ—°μ‚°μžμ΄λ‹€. 7 / 4 = 1.75

 

 

2.2. λ¬Έμžμ—΄ μžλ£Œν˜•

  λ¬Έμžμ—΄(string)μ΄λž€ 문자, 단어 λ“±μœΌλ‘œ κ΅¬μ„±λœ λ¬Έμžλ“€μ˜ 집합을 μ˜λ―Έν•œλ‹€. λ¬Έμžμ—΄μ€ ν°λ”°μ˜΄ν‘œ(" "), μž‘μ€λ”°μ˜΄ν‘œ(' '), 큰 λ”°μ˜΄ν‘œ/μž‘μ€ λ”°μ˜΄ν‘œ 3개(""" """), λ°±μŠ¬λž˜μ‹œ(\)둜 λ‘˜λŸ¬μŒ“μΈλ‹€λŠ” νŠΉμ§•μ΄ μžˆλ‹€. μ™œ ν‘œν˜„ 방법이 μ—¬λŸ¬κ°€μ§€μΈμ§€ μ•Œμ•„λ³΄μž. μΆ”κ°€λ‘œ,  예λ₯Όλ“€μ–΄ 123은 μˆ«μžν˜•μ΄μ§€λ§Œ '123'은 λ¬Έμžν˜•μ΄λ‹€.

<ν°λ”°μ˜΄ν‘œ/μž‘μ€λ”°μ˜΄ν‘œ 1개>
print("Python's favorite food is perl")
print('Python's favorite food is perl')

-> 이 두 경우 였λ₯˜ λ©”μ‹œμ§€κ°€ λœ¬λ‹€. 'Python'이 λ¬Έμžμ—΄λ‘œ μΈμ‹λ˜μ–΄ ꡬ문 였λ₯˜(SyntaxError: invalid syntax)κ°€ λ°œμƒν•œλ‹€.

 

<ν°λ”°μ˜΄ν‘œ/μž‘μ€λ”°μ˜΄ν‘œ 연속 3개>
print('''Python's favorite food is perl''')
print("""Python's favorite food is perl""")

>>>Python's favorite food is perl
>>>Python's favorite food is perl

->μ˜λ„ν–ˆλ˜ κ·ΈλŒ€λ‘œ 좜λ ₯λœλ‹€.

<λ°±μŠ¬λž˜μ‹œλ₯Ό μ‚¬μš©>
print('Python\'s favorite food is perl')
print("Python\'s favorite food is perl")

>>>Python's favorite food is perl
>>>Python's favorite food is perl

-> λ°±μŠ¬λž˜μ‹œλ₯Ό μ‚¬μš©ν•΄ ν°λ”°μ˜΄ν‘œ/μž‘μ€λ”°μ˜΄ν‘œλ₯Ό λ¬Έμžμ—΄μ— ν¬ν•¨μ‹œν‚¬μˆ˜λ„ μžˆλ‹€. λ°±μŠ¬λž˜μ‹œλ₯Ό λ”°μ˜΄ν‘œ μ•žμ— μ‚½μž…ν•˜λ©΄, λ°±μŠ¬λž˜μ‹œ λ’€μ˜ λ”°μ˜΄ν‘œλŠ” λ¬Έμžμ—΄μ„ λ‘˜λŸ¬μ‹ΈλŠ” κΈ°ν˜Έκ°€ μ•„λ‹Œ 문자(',") 자체λ₯Ό λœ»ν•˜κ²Œ λœλ‹€.

 

 

 

2.2.1. μ—¬λŸ¬ 쀄인 λ¬Έμžμ—΄μ„ λ³€μˆ˜μ— λŒ€μž…ν•˜κ³  μ‹Άμ„λ•Œ

  λ¬Έμžμ—΄μ΄ 항상 ν•œ μ€„μ§œλ¦¬λ§Œ μžˆλŠ”κ²ƒμ€ μ•„λ‹ˆλ‹€.

  • \n: 쀄을 λ°”κΎΈλŠ” μ΄μŠ€μΌ€μ΄ν”„ μ½”λ“œ
  • μ—°μ†λœ 큰/μž‘μ€ λ”°μ˜΄ν‘œ μ‚¬μš©:  \n의 가독성이 μ•ˆμ’‹λ‹€λŠ” 단점을 μ»€λ²„ν•œλ‹€.

+) μ΄μŠ€μΌ€μ΄ν”„ μ½”λ“œ: ν”„λ‘œκ·Έλž˜λ°ν•  λ•Œ μ‚¬μš©ν•  수 μžˆλ„λ‘ 미리 μ •μ˜ν•΄λ‘” '문자 μ‘°ν•©'이닀. 주둜 좜λ ₯물을 보기 μ’‹κ²Œ μ •λ ¬ν•˜λŠ” μš©λ„λ‘œ μ‚¬μš©ν•œλ‹€.

  • \n: λ¬Έμžμ—΄ μ•ˆμ—μ„œ 쀄을 λ°”κΏ€ λ•Œ μ‚¬μš©
  • \t: λ¬Έμžμ—΄ 사이에 νƒ­ 만큼의 간격을 쀄 λ•Œ μ‚¬μš©
  • \\, \', \": 문자λ₯Ό κ·ΈλŒ€λ‘œ ν‘œν˜„ν•  λ•Œ μ‚¬μš©
  • \r: 캐리지 리턴(쀄 λ°”κΏˆ 문자). ν˜„μž¬ μ»€μ„œλ₯Ό κ°€μž₯ μ•žμœΌλ‘œ 이동
  • \f: 폼 ν”Όλ“œ(쀄 λ°”κΏˆ 문자). ν˜„μž¬ μ»€μ„œλ₯Ό λ‹€μŒ μ€„λ‘œ 이동
  • \a: λ²¨μ†Œλ¦¬. 좜λ ₯ν•  λ•Œ PC μŠ€ν”Όμ»€μ—μ„œ μ‚‘ μ†Œλ¦¬κ°€ λ‚œλ‹€
  • \b: 백슀페이슀
  • \000: 널 문자

 

 

 

2.3. λ¬Έμžμ—΄ μ—°μ‚°ν•˜κΈ°

  λ‹€λ₯Έ μ–Έμ–΄μ—μ„œλŠ” μ‰½κ²Œ μ°Ύμ•„λ³Ό 수 μ—†λŠ” κΈ°λŠ₯으둜, νŒŒμ΄μ¬μ—μ„œλŠ” λ¬Έμžμ—΄μ„ λ”ν•˜κ±°λ‚˜ κ³±ν•  수 μžˆλ‹€.

<λ¬Έμžμ—΄ λ”ν•΄μ„œ μ—°κ²°ν•˜κΈ°>
head = "Python "
tail = "is fun"
print(head + tail)

>>>Python is fun
<λ¬Έμžμ—΄ κ³±ν•˜κΈ°>
head = "Python "
print(head * 3)

>>>Python Python Python

-> μš°λ¦¬κ°€ 일반적으둜 μ‚¬μš©ν•˜λŠ” 숫자 κ³±ν•˜κΈ°μ˜ μ˜λ―Έμ™€λŠ” λ‹€λ₯΄λ‹€. *λŠ” λ¬Έμžμ—΄μ˜ λ°˜λ³΅μ„ λœ»ν•˜λŠ” 의미둜 μ‚¬μš©λœλ‹€.

<λ¬Έμžμ—΄ 길이 κ΅¬ν•˜κΈ°>-len ν•¨μˆ˜ μ‚¬μš©
a = 'Life id too short'
print(len(a))

>>>17

 

 

 

 

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

  인덱싱(Indexing)μ΄λž€ 무엇인가λ₯Ό '가리킨닀'λŠ” 의미이고, μŠ¬λΌμ΄μ‹±(Slicing)은 무엇인가λ₯Ό 'μž˜λΌλ‚Έλ‹€'λŠ” μ˜λ―Έμ΄λ‹€.

 

 

2.4.1. λ¬Έμžμ—΄ μΈλ±μ‹±μ΄λž€?

string = 'Hello Pythone'
print(string[0])

>>> H

  string λ¬Έμžμ—΄μ—μ„œ HλŠ” 첫 번째 자리λ₯Ό λœ»ν•˜λŠ” 숫자 0이닀. string[0]이 λœ»ν•˜λŠ” 것응 stringμ΄λΌλŠ” λ¬Έμžμ—΄μ˜ 0번째 문자λ₯Ό μ˜λ―Έν•œλ‹€. μœ„μ˜ μ½”λ“œμ—μ„œ λ³Ό 수 μžˆλ“―μ΄ string[0]λŠ” λ¬Έμžμ—΄ μ•ˆμ˜ νŠΉμ •ν•œ 값을 λ½‘μ•„λ‚΄λŠ” 역할을 ν•œλ‹€. μ΄λŸ¬ν•œ μž‘μ—…μ„ 인덱싱이라고 ν•œλ‹€. 

 

a='Hello Python'
print(a[-1])
>>>n

  λ¬Έμžμ—΄μ„ λ’€μ—μ„œλΆ€ν„° 읽기 μœ„ν•΄μ„œλŠ” λ§ˆμ΄λ„ˆμŠ€(-) 기호λ₯Ό 뢙인닀. "λ’€μ—μ„œλΆ€ν„° 첫 번째 문자λ₯Ό ν‘œμ‹œν•  λ•Œλ„ 0λΆ€ν„° μ„Έμ–΄ a[-0]이라고 ν•΄μ•Όν•˜μ§€ μ•Šμ„κΉŒ?" λΌλŠ” 의문이 λ“€ μˆ˜λ„ μžˆκ² μ§€λ§Œ 0κ³Ό -0은 같은 것이기 λ•Œλ¬Έμ—  a[-0]을 μ‚¬μš©ν•˜λ©΄ a[0]으둜 인식 λ˜μ–΄, λ’€λΆ€ν„° μ„ΈλŠ”κ²Œ μ•„λ‹Œ μ•žμ—μ„œ λΆ€ν„° μ„ΈλŠ” 꼴이 λœλ‹€.

 

 

 

2.4.2. λ¬Έμžμ—΄ μŠ¬λΌμ΄μ‹±μ΄λž€?

  μΈλ±μ‹±μ—μ„œ ν•œ κ²ƒμ²˜λŸΌ ν•œ κΈ€μžμ”© λ½‘μ•„λ‚΄λŠ” 것이 μ•„λ‹Œ, ν•œ 단어λ₯Ό 뽑아낼 μˆ˜λŠ” μ—†μ„κΉŒ? a[0] + a[1] λ“±κ³Ό 같이 μ ‘κ·Όν•  μˆ˜λ„ μžˆκ² μ§€λ§Œ νŒŒμ΄μ¬μ€ 더 쒋은 방법을 μ œκ³΅ν•œλ‹€. λ°”λ‘œ μŠ¬λΌμ΄μ‹± 기법이닀.

a = 'Hello Pythone'
print(a[0:5])

>>>Hello

 

  a[μ‹œμž‘ 번호:끝 번호]λ₯Ό μ§€μ •ν•  λ•Œ, [μ‹œμž‘ 번호] ~ [(끝 번호) - 1] κΉŒμ§€ 좜λ ₯λœλ‹€. 

+) 곡백 λ¬Έμžλ„ μ•ŒνŒŒλ²³ 문자 λ“±κ³Ό λ™μΌν•˜κ²Œ μ·¨κΈ‰λœλ‹€.

 

a = 'Hello Pythone'
print(a[0:])
print(a[:])
print(a[:5])

>>>Hello Pythone
>>>Hello Pythone
>>>Hello
  • [μ‹œμž‘ 번호:끝 번호]μ—μ„œ μ‹œμž‘ 번호λ₯Ό μƒλž΅ν•˜λ©΄, λ¬Έμžμ—΄μ˜ μ²˜μŒλΆ€ν„° 끝 λ²ˆν˜ΈκΉŒμ§€ 뽑아낸닀
  • [μ‹œμž‘ 번호:끝 번호]μ—μ„œ 끝 번호λ₯Ό μƒλž΅ν•˜λ©΄, μ‹œμž‘ λ²ˆν˜ΈλΆ€ν„° κ·Έ 문자의 λκΉŒμ§€ 뽑아낸닀
  • [μ‹œμž‘ 번호:끝 번호]μ—μ„œ λ‘˜ λ‹€ μƒλž΅ν•˜λ©΄, λ¬Έμžμ—΄μ˜ μ²˜μŒλΆ€ν„° λκΉŒμ§€λ₯Ό 뽑아낸닀

 

  μŠ¬λΌμ΄μ‹±μ—μ„œλ„ λ§ˆμ΄λ„ˆμŠ€(-) 기호λ₯Ό μ‚¬μš©ν•  수 μžˆλ‹€. 이 경우 μ—­μ‹œ 끝 문자 μ „μ˜ λ¬Έμžμ—΄ κΉŒμ§€λ§Œ 좜λ ₯ν•œλ‹€.

a[19:-7]
-> a[19] ~ a[-8]

 

  

  μ•„λž˜ μ½”λ“œλŠ” 자주 μ‚¬μš©ν•˜κ²Œ λ˜λŠ” μŠ¬λΌμ΄μ‹± 기법을 ν™œμš©ν•˜μ—¬ λ¬Έμžμ—΄μ„ μ„Έ λΆ€λΆ„μœΌλ‘œ λ‚˜λˆˆ κ²½μš°μ΄λ‹€. a[:4]λŠ” a[4]κ°€ ν¬ν•¨λ˜μ§€ μ•ŠλŠ”λ‹€λŠ” 것, 이 κ²ƒλ§Œ 잘 μΊμΉ˜ν•˜κ³  λ„˜μ–΄κ°€λ©΄ 될 것 κ°™λ‹€.

a = '20240826Rainy'
year=a[:4]
date=a[4:8]
weather=a[8:]

print(year)
print(date)
print(weather)

>>>2024
>>>0826
>>>Rainy

 

 

 

2.4.3. λ¬Έμžμ—΄μ—μ„œ ν•œ 문자만 κ΅μ²΄ν•˜λŠ” 방법

  Pithon을 Python으둜 λ°”κΎΈλ €λ©΄ μ–΄λ–»κ²Œ ν•΄μ•Όν• κΉŒ? 일반적으둜 이 방법을 제일 λ¨Όμ € λ– μ˜¬λ¦΄ 것이닀.

a=Pithon
a[1] = 'y'
print('a')

>>>NameError: name 'Pithon' is not defined

-> ν•˜μ§€λ§Œ 였λ₯˜κ°€ λ°œμƒν•œλ‹€. μ΄μœ λŠ” 'λ¬Έμžμ—΄μ˜ μš”μ†Ÿκ°’μ€ λ°”κΏ€ 수 μžˆλŠ” 값이 μ•„λ‹ˆκΈ° λ•Œλ¬Έμ΄λ‹€'. κ·Έλž˜μ„œ immutable(λΆˆλ³€μ˜)ν•œ μžλ£Œν˜•μ΄λΌκ³ λ„ λΆˆλ¦°λ‹€.

 

 

  이 λ¬Έμ œλŠ” μŠ¬λΌμ΄μ‹± 기법을 μ‚¬μš©ν•΄μ„œ ν’€ 수 μžˆλ‹€.

a='Pithon'
print(a[0] + 'y' + a[2:])
print(a[:1] + 'y' + a[2:])

>>>Python
>>>Python

 

 

 

 

 

2.5. λ¬Έμžμ—΄ ν¬λ§€νŒ…

  λ¬Έμžμ—΄μ—μ„œ 또 ν•˜λ‚˜ μ•Œμ•„μ•Ό ν•  것이 μžˆλ‹€. λ¬Έμžμ—΄ ν¬λ§€νŒ…μ΄λž€, λ¬Έμžμ—΄ μ•ˆμ˜ νŠΉμ •ν•œ 값을 λ°”κΏ”μ•Ό ν•  κ²½μš°κ°€ μžˆμ„ λ•Œ 이것을 κ°€λŠ₯ν•˜κ²Œ ν•΄μ£ΌλŠ” 것이닀.

 

 

2.5.1. λ¬Έμžμ—΄ ν¬λ©”νŒ… λ”°λΌν•˜κΈ°

<숫자 λŒ€μž…>

print('I have %d apples' %3)
>>I have 3 apples

-> %dλŠ” λ¬Έμžμ—΄ 포맷 μ½”λ“œλΌκ³  λΆ€λ₯Έλ‹€.

 

 

<λ¬Έμžμ—΄ λ°”λ‘œ λŒ€μž…>

print('I have %s apples' %'big')
>>>I hace big apples

->λ¬Έμžμ—΄μ„ λŒ€μž…ν•  λ•ŒλŠ”, 큰/μž‘μ€ λ”°μ˜΄ν‘œλ₯Ό λ°˜λ“œμ‹œ 써주어야 ν•œλ‹€.

 

 

<숫자 값을 λ‚˜νƒ€λ‚΄λŠ” λ³€μˆ˜λ‘œ λŒ€μž…>

num=3
print('I have %s apples' %num)
>>>I hace 3 apples

 

 

<2개 μ΄μƒμ˜ κ°’ λ„£κΈ°>

num=3
food='pizza'
print('I eat %d pices of %s' %(num,food))
>>>I eat 3 pices of pizza

->λ³€μˆ˜λ‘œ μ„ μ–Έν•œ λ¬Έμžμ—΄μ„ 넣을 κ²½μš°μ—λŠ” λ”°μ˜΄ν‘œκ°€ ν•„μš” μ—†λ‹€

 

 

2.5.2. λ¬Έμžμ—΄ 포맷 μ½”λ“œ

  • %s: λ¬Έμžμ—΄
  • %c: 문자 1개
  • %d: μ •μˆ˜(Integer)
  • %f: 뢀동 μ†Œμˆ˜
  • %o: 8μ§„μˆ˜
  • %x: 16μ§„μˆ˜
  • %%: Literal(문자 % 자체)

-> μ—¬κΈ°μ„œ %s 포맷 μ½”λ“œλŠ”, μ–΄λ–€ ν˜•νƒœμ˜ 값이든 λ³€ν™˜ν•΄ 넣을 수 μžˆλ‹€. %sλŠ” μžλ™μœΌλ‘œ %뒀에 μžˆλŠ” 값을 λ¬Έμžμ—΄λ‘œ λ°”κΎΈκΈ° λ•Œλ¬Έμ΄λ‹€.

print('I have %s apples' %3)
print('I have %s apples' %3.141592)
print('I have %s apples' %'big')

>>>I have 3 apples
>>>I have 3.141592 apples
>>>I have big apples