본문 바로가기
코딩 공부/파이썬 (혼공단 11기)

[혼공파] 1주차_01-1 ~ 02-2

by 루담 2024. 1. 3.

👩🏻‍💻 2024년 청룡의 해가 밝음과 동시에 혼공학습단 11기가 시작됐다.
예전에 아주 잠깐 파이썬 겉핥기를 시도(?)하다가 포기했었는데, 새 마음 새 뜻으로 다시 도전하게 됐다.
혼자서 공부하는 게 아니니 동기부여도 되고 아주 좋은걸 😊
나의 목표는 아주 단순하고 쉽다! 6주 동안 모든 미션을 완료하고 프로그래밍의 매력을 알아가는 것! 그것만으로도 큰 수확이지 않을까싶다 ✨
 
 


01-1. 파이썬을 하기 전에 읽는 아주 간단한 설명
▷핵심 키워드 - 컴퓨터 프로그램 / 소스 코드 / 파이썬

 
 
✏️컴퓨터 프로그램
-프로그램(ProGram)이란 미리(Pro) 작성된 것(Gram)
-> '진행 계획이나 순서'
-컴퓨터 프로그램: 컴퓨터가 무엇을 해야 할지 미리 작성한 진행 계획
 
✏️프로그래밍 언어
-컴퓨터가 이해할 수 있는 값은 오로지 0과 1로 이루어진 이진 숫자이다. 과거에는 이진 숫자를 입력해서 프로그램을 만들었다. 하지만 이진 숫자로 프로그램을 만드는 것은 사람들에게 어렵고 비효율적이다. 그래서 사람이 이해하기 쉬운 언어로 프로그램을 만들기 위한 목적으로 프로그래밍 언어가 만들어졌다.
-소스 코드: 프로그래밍 언어로 작성한 프로그램
 
✏️파이썬
-장점
① 문법이 간단해서 배우기 쉽다 -> 단순한 문법을 가지고 있어 비전공자도 쉽게 배울 수 있다
② 많은 사람이 사용하고 있어서 다양한 분야에서 활용할 수 있다 -> 기본적인 데스크톱 애플리케이션부터 웹 서버, 해킹 도구, IoT, 인공지능 등
③ 대부분의 운영체제에서 같은 방법으로 사용할 수 있다
-단점
① 느리다 -> 일반적으로 C 언어보다 10~350배 정도 느리다
 
 

01-2. 파이썬을 배우기 위해 준비해야 할 것들
▷핵심 키워드 - 텍스트 에디터 / 파이썬 인터프리터 / 인터렉티브 셸 / 윈도우 파워셸 / python 명령어

 
 
✏️개발 환경
-텍스트 에디터: 프로그래밍 언어로 이루어진 코드를 작성할 수 있는 곳
-인터프리터(코드 실행기): 텍스트 에디터로 작성한 코드를 실행하는 곳
👉🏻파이썬 뿐만 아니라 어떤 프로그래밍 언어라도 이 두 가지가 필요하다
 
✏️내가 선택한 텍스트 에디터
- 예전에 파이썬 했을 때에 비주얼 스튜디오 코드를 썼다. 그거 한국어로 세팅해 놓은 게 있기도 하고, 책에서도 IDLE 에디터는 긴 코딩에 적합하지 않다고 하니, 비주얼 스튜디오 코드로 파이썬을 다룰 예정!

6주동안 잘 부탁해 🖐🏻

 
 
✏️코드 실행기: 윈도우 파워셸
-윈도우 파워셸을 열고, 예제를 만들어 실험해보자.
👇🏻예제 파일명: hello.py

print("Hello Coding Python")
PS C:\Users\User\Desktop\Python(혼공)> python hello.py

입력! 과연 결과는?

외 않되...?

왜 Python 이라는 단어로만 출력될까?
아무리 적어도 자꾸 저렇게 나와서 엄청 검색했다.
그리고...

>python hello.py
>py hello.py로 수정.
PS C:\Users\User\Desktop\Python(혼공)> py hello.py

python 대신 py 를 사용.

성공!!

성공했따!
내 컴퓨터만의 문제였는지는 잘 모르지만, python 으로 안되는 사람은 py로 바꿔서 적어보길.ㅎㅎ
 

01-3. 이 책에서 자주 나오는 파이썬 용어들
▷핵심 키워드 - 표현식 / 키워드 / 식별자 / 주석 / print()

 
 
✏️문장
-문장: 실행할 수 있는 코드의 최소 단위
-프로그램: 문장들이 모인 것
 
✏️표현식
-표현식: 어떠한 값을 만들어 내는 간단한 코드
 
✏️키워드
-키워드: 특별한 의미가 부여된 단어 / 파이썬이 만들어질 때 이미 사용하겠다고 예약해놓은 것
-파이썬은 대소문자를 구분한다. True ≠ true
 
✏️식별자
-식별자: 프로그래밍 언어에서 이름을 붙일 때 사용하는 단어
-규칙

  • 키워드를 사용하면 안 됨
  • 특수 문자는 언더 바(_)만 허용
  • 숫자로 시작하면 안 됨
  • 공백을 포함할 수 없음

👻식별자를 쉽게 이해할 수 있는 방법
첫째) 스네이크 케이스 - 단어 사이에 언더 바(_) 기호를 붙여 식별자를 만든다.

itemlist (x)
item_list (o)

둘째) 캐멀 케이스 - 단어들의 첫 글자를 대문자로 만들어 식별자를 만든다.

itemlist (x)
ItemList (o)

 
👻식별자 구분
-파이썬에서는 첫 번째 글자가 소문자라면 무조건 스네이크 케이스이다.
-캐멀 케이스로 작성되어 있으면 클래스
-스네이크 케이스로 작성되어 있으면 함수 또는 변수
->뒤에 괄호가 붙어 있으면 함수
->뒤에 괄호가 없으면 변수

1. print() : 스네이크 케이스/괄호o -> 함수
2. list() : 스네이크 케이스/괄호o -> 함수
3. soup.select() : 스네이크 케이스/괄호o -> 함수
4. math.pi : 스네이크 케이스/괄호x -> 변수
5. math.e : 스네이크 케이스/괄호x -> 변수
6. class Animal: : 캐멀 케이스 -> 클래스
7. BeautifulSoup() : 캐멀 케이스/괄호o-> '일단' 클래스
-> 클래스+괄호클래스 생성자라고 불리는 특이한 형태의 함수

 
✏️주석
-주석: 프로그램의 진행에 전혀 영향을 주지 않는 코드로, 프로그램을 설명하기 위해 사용한다
-주석으로 처리하고자 하는 부분 앞에 # 기호를 붙인다

>>> #간단히 출력하는 예
>>> print("Hello! Python Programming...") #문자열을 출력한다
Hello! Python Programming...

 
✏️연산자와 자료
-연산자: 스스로 값이 되는 것은 아니고 값과 값 사이에 무언가 기능을 적용할 때 사용하는 것
-단독으로 쓰일 때는 아무 의미를 갖지 못하지만, 양쪽에 숫자가 있을 경우에는 기능을 수행한다

>>> 1+1
2

>>> 10-10
0

 
✏️출력: print()
-파이썬의 가장 기본적인 출력 방법
 
👻하나만 출력하기

>>> print("Hello Python Programming...!")
Hello Python Programming...!

>>> print(52)
52

>>> print(273)
273

 
👻여러 개 출력하기

>>> print(52, 273, "Hello")
52 273 Hello

>>> print("안녕하세요", "저의", "이름은", "윤인성입니다!")
안녕하세요 저의 이름은 윤인성입니다!

 
👻줄바꿈하기
-print() 함수 괄호 안에 아무것도 입력하기 않으면 단순하게 줄바꿈을 한다

>>> print()

>>>

 
🖐🏻직접 해보는 손코딩🖐🏻

#하나만 출력합니다.
print("#하나만 출력합니다.")
print("Hello Python Programming...!")
print()

#여러 개를 출력합니다.
print("여러 개를 출력합니다.")
print(10, 20, 30, 40, 50)
print("안녕하세요","저의","이름은","윤인성입니다!")
print()

#아무것도 입력하지 않으면 단순하게 줄바꿈합니다.
print("#아무것도 출력하지 않습니다.")
print("---확인 전용선---")
print()
print()
print("---확인 전용선---")

 
-결과

 
 

1chapter 마무리

 
🔎 핵심 포인트
-파이썬에서는 값을 만들어 내는 간단한 코드를 표현식이라고 부른다
-키워드는 의미가 부여된 특별한 단어로, 사용자가 지정하는 이름에 사용하면 안 된다
-식별자는 프로그래밍 언어에서 이름을 붙일 때 사용하는 단어이다
-주석은 프로그램을 설명하는 데 사용하며, 프로그램에는 어떠한 영향도 주지 않는다
-print() 함수는 파이썬의 가장 기본적인 출력 방법으로 괄호 안에 출력하고 싶은 것을 입력해서 사용한다
 
 


02-1. 자료형과 문자열
▷핵심 키워드 - 자료형 / 문자열 / 이스케이프 문자 / 문자열 연산자 / type() / len()

 
 
✏️자료형과 기본 자료형
-문자열(string) : "안녕하세요", "Hello World" 등
-숫자(number) : 52, 273, 103.32 등
-불(boolean) : True, False
 
👻자료형 확인하기
-자료형(data type): type() 함수

>>> print(type("안녕하세요"))
<class 'str'>

>>>print(type(273))
<class 'int'>

📋str이란 string을 짧게 표현한 것으로, 문자열을 의미한다. 또한 int는 integer를 짧게 표현한 것으로 정수를 의미한다.
 
✏️문자열 만들기
-문자열: 따옴표("")로 감싸 입력한 것
 
👻따옴표로 문자열 만들기

>>>print("안녕하세요")
안녕하세요

>>>print('안녕하세요')
안녕하세요

👉🏻큰따옴표나 작은따옴표나 같은 결과를 출력한다
 
👻문자열 내부에 따옴표 넣기

>>>print(""안녕하세요"라고 말했습니다")
SyntaxError: invalid syntax
⚠️오류 발생
<해결>
>>>print('"안녕하세요"라고 말했습니다')
"안녕하세요"라고 말했습니다

>>>print("'배가 고픕니다'라고 생각했습니다")
'배가 고픕니다'라고 생각했습니다

📋Syntax Error(구문 오류): 작성한 코드에 문제가 있어 아예 실행조차 되지 않는다는 의미 / 대표적인 오류가 괄호를 열고, 닫지 않을 때
 
👻이스케이프 문자를 사용해 문자열 만들기
-이스케이프 문자(escape character): 역슬래시(\) 기호와 함께 조합해서 사용하는 특수한 문자

  • \": 큰따옴표
  • \': 작은따옴표
>>>print("\"안녕하세요\"라고 말했습니다")
"안녕하세요"라고 말했습니다

>>>print('\'배가 고픕니다\'라고 생각했습니다')
'배가 고픕니다'라고 생각했습니다

 
📋이 외의 이스케이프 문자

  • \n: 줄바꿈
  • \t: 탭
  • \\: 역슬래시(\)
>>>print("안녕하세요\n안녕하세요")
안녕하세요
안녕하세요

>>>print("안녕하세요\t안녕하세요")
안녕하세요      안녕하세요

>>>print("\\ \\ \\")
\ \ \ \

 
🖐🏻직접 해보는 손코딩🖐🏻

print("이름\t나이\t지역")
print("윤인성\t25\t강서구")
print("윤아린\t24\t강서구")
print("구름\t3\t강서구")

-결과

구름이 어떻게 생겼을지 매우 궁금^>^

 
👻여러 줄 문자열 만들기
-이스케이프 문자 중 \n을 사용하면 줄바꿈을 할 수 있다

>>>print("동해물과 백두산이 마르고 닳도록\n하느님이 보우하사 우리나라 만세\n무궁화 삼천리 화려강산 대한사람\n대한으로 길이 보전하세")
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세

-이렇게 한 줄에 긴 코드를 입력하면 읽기도 힘들고 어떤 부분에서 줄바꿈이 일어나는지 확인하기 어렵다
👉🏻그래서 파이썬은 여러 줄 문자열 기능을 지원한다

>>>print("""동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세""")
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세

 
👻줄바꿈 없이 문자열 만들기

>>>print("""
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세
""")

동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세

👆🏻위 아래로 의도하지 않은 줄바꿈이 들어간다
👉🏻만약 의도하지 않은 줄바꿈이 들어가지 않게 하려면 \기호를 사용한다. '코드를 쉽게 보려고 줄바꿈한 것이지 실질적인 줄바꿈이 아니다'라는 것을 나타냄

>>>print("""\
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세\
""")
동해물과 백두산이 마르고 닳도록
하느님이 보우하사 우리나라 만세
무궁화 삼천리 화려강산 대한사람
대한으로 길이 보전하세

 
✏️문자열 연산자
👻문자열 연결 연산자: +

"문자열"+"문자열"
>>>print("안녕"+"하세요")
안녕하세요

>>>print("안녕하세요"+"!")
안녕하세요!

>>>print("안녕하세요"+1)
TypeError: can only concatenate str (not "int") to str
⚠️오류 발생

📋위 오류는 문자끼리만 연결할 수 있고 숫자와 연결이 불가능하다는 의미
👉🏻따라서 문자열은 무조건 문자열끼리 +연산자를 사용해서 연결해야 하고, 숫자라 하더라도 큰따옴표를 붙어 문자열로 인식시켜야만 오류가 발생하지 않음

>>>print("안녕하세요"+"1")
안녕하세요1

 
👻문자열 반복 연산자: *

>>>print("안녕하세요"*3)
안녕하세요안녕하세요안녕하세요

>>>print(3*"안녕하세요")
안녕하세요안녕하세요안녕하세요

 
👻문자 선택 연산자(인덱싱): []
①제로 인덱스(zero index) - 숫자를 0부터 세는 인덱스 유형
②원 인덱스(one index) - 숫자를 1부터 세는 인덱스 유형
👉🏻파이썬은 '제로 인덱스' 유형을 사용하는 언어

[0] [1] [2] [3] [4]

 
🖐🏻직접 해보는 손코딩🖐🏻

print("문자 선택 연산자에 대해 알아볼까요?")
print("안녕하세요"[0])
print("안녕하세요"[1])
print("안녕하세요"[2])
print("안녕하세요"[3])
print("안녕하세요"[4])

-결과

👉🏻0번째가 '안', 4번째가 '요'
 
📋대괄호 안의 숫자를 음수로 입력하면 뒤에서부터 선택할 수 있다

[-5] [-4] [-3] [-2] [-1]

 
🖐🏻직접 해보는 손코딩🖐🏻

print("문자를 뒤에서부터 선택해 볼까요?")
print("안녕하세요"[-1])
print("안녕하세요"[-2])
print("안녕하세요"[-3])
print("안녕하세요"[-4])
print("안녕하세요"[-5])

-결과

 
👻문자열 범위 선택 연산자(슬라이싱): [:]
-문자열의 특정 범위를 선택할 때 사용하는 연산자

>>>print("안녕하세요"[1:4])
녕하세

👉🏻범위는 대괄호 안에 위치를 콜론(:)으로 구분해서 지정한다
👉🏻파이썬은 범위 지정 시 '마지막 숫자를 포함하지 않음'으로 적용된다

[0] [1] [2] [3] [4]

 

>>>print("안녕하세요"[0:2])
안녕

>>>print("안녕하세요"[1:3])
녕하

>>>print("안녕하세요"[2:4])
하세

 
📋문자열 범위 선택 연산자: 대괄호 안에 넣는 숫자 둘 중 하나를 생략하는 형태

  • 뒤의 값 생략[1:] - 자동으로 가장 최대 위치(마지막 글자)까지
  • 앞의 값 생략[:3] - 가장 앞쪽의 위치(첫 번째 글자)까지
>>>print("안녕하세요"[1:])
녕하세요

>>>print("안녕하세요"[:3])
안녕하

 
👉🏻이처럼 []연산자를 이용해 문자열의 특정 위치에 있는 문자를 참조하는 것을 인덱싱이라 하고, [:]연산자를 이용해 문자열의 일부를 추출하는 것을 슬라이싱이라고 한다
 
👻IndexError(index out of range) 예외
-IndexError 예외는 리스트/문자열의 수를 넘는 요소/글자를 선택할 때 발생한다

>>>print("안녕하세요"[10])

-결과

 
✏️문자열의 길이 구하기
-문자열의 길이를 구할 때는 len() 함수를 사용한다
-괄호 내부에 문자열을 넣으면 '문자열에 들어있는 문자의 개수(=문자열의 길이)'를 세어준다

>>>print(len("안녕하세요"))
5

 
 

2-1 chapter 마무리

 
🔎핵심 포인트
-자료의 형식을 자료형이라고 한다
-문자의 나열을 문자열이라고 한다
-이스케이프 문자는 문자열 내부에서 특수한 기능을 수행하는 문자열을 말한다
-문자열 연산자는 (+), (*), ([]), ([:])이 있다
-type()은 자료형을 확인하는 함수, len()은 문자열의 길이를 구하는 함수
 
 


[기본 미션]

Q3. 프로그램의 실행 결과 예측

#연습 문제
\\\\
--------

 
Q4. 몇 행에서 어떤 오류가 일어나는가, 그 이유

5행
이유: "안녕하세요"의 문자열은 [0]부터 [4]까지 있다. print("안녕하세요"[5])의 경우 문자열에 없는 문자를 선택하고 있으므로 IndexError가 뜰 것이다.

 
Q5. 프로그램의 실행 결과 예측

녕하
하세
녕하세요
안녕하

[선택 미션]

Q. 모르는 용어 정리

  1. Syntax Error : 작성한 코드에 문제가 있어 아예 실행조차 되지 않는다는 의미 / 대표적인 오류가 괄호를 열고, 닫지 않을 때
  2. Escape character : 역슬래시(\) 기호와 함께 조합해서 사용하는 문자
  3. 인덱싱 : []연산자를 이용해 문자열의 특정 위치에 있는 문자를 참조하는 것
  4. 슬라이싱 : [:] 연산자를 이용해 문자열의 일부를 추출하는 것

 
 

2-2. 숫자
▷핵심 키워드 - 숫자 자료형 / 숫자 연산자 / 연산자 / 우선순위

 
 
✏️시작하기 전에
-floating point(실수 또는 부동 소수점): 실수는 52.273을 0.52273*10^2와 같이 소수점의 위치를 바꿔도 결국 같은 숫자이므로, '소수점이 움직이는 숫자'라는 의미
👉🏻'소수점이 동동 부유하며 움직인다'로 이해하자!
 
✏️숫자의 종류

>>>print(type(52))
<class 'int'>

>>>print(type(52.273))
<class 'float'>
  • int: 정수
  • float: 부동소수점(실수)

 
✏️숫자 연산자
👻사칙 연산자: +, -, *, /
 
👻정수 나누기 연산자: //

>>>print("3/2=", 3/2)
3/2=1.5

>>>print("3//2=",3//2)
3//2=1

👉🏻정수 나누기 연산자: 숫자를 나누고 소수점 이하의 자릿수를 떼어버린 후 정수 부분만 남기는 연산자
 
👻나머지 연산자: %

>>>print("5%2=",5%2)
5%2=1

👉🏻몫이 2이고 나머지가 1이므로 나머지 1을 출력
 
👻제곱 연산자:**

>>>print("2**1=",2**1)
2**1=2

>>>print("2**2=",2**2)
2**2=4

>>>("2**3=",2**3)
2**3=8

 
✏️연산자의 우선순위
-곱셈과 나눗셈이 덧셈과 뺄셈보다 우선하다. 또한 우선순위를 가지는 연산자는 왼쪽에서 오른쪽 순서로 계산한다.
-연산자 우선순위가 확실한 경우에도 괄호로 감싸주는 것이 좋다
 
👻TypeError 예외

>>>string="문자열"
>>>number=273
>>>string+number

👉🏻위와 같이 문자열과 숫자를 + 연산자로 연결한다면?
-결과

👆🏻문자열은 +연산자를 문자열 연결 연산자로 사용하려고 하고, 숫자는 +연산자를 덧셈 연산자로 사용하려다 보니 충돌이 발생한 것
 
 

2-2 chapter 마무리

 
🔎핵심 포인트
-숫자 자료형에는 정수형실수형(부동 소수점)이 있다
-숫자 연산자에는 +, -, *, /, //, %, ** 가 있다
-연산자에는 우선순위가 존재한다
 
 
 

'코딩 공부 > 파이썬 (혼공단 11기)' 카테고리의 다른 글

[혼공파] 6주차_07-2 ~ 08  (0) 2024.02.07
[혼공파] 5주차_06 ~ 07-1  (0) 2024.02.01
[혼공파] 4주차_05  (0) 2024.01.24
[혼공파] 3주차_04  (0) 2024.01.21
[혼공파] 2주차_02-3 ~ 03  (0) 2024.01.12