🔎 파이썬(Python)
프로그램(program)
- Pro(미리) + Gram(작성도니 것) = Program(미리 작성된 것)
- 프로그램 = 미리 작성된 것 = 진행 계획
프로그래밍(programming)
컴퓨터 프로그램(computer program)
- 컴퓨터가 무엇을 해야 할지 미리 작성한 진행 계획
프로그래밍 언어(programming language)
- 컴퓨터가 이해할 수 있는 이진코드로 변환되는 것을 목표로 만들어진, 사람이 쉽게 이해할 수 있는 형태의 언어
- 대표적인 포로그래밍 언어는 Python, C, C#, C++, JAVA, Ruby, Java Script 등
- 이진코드(binary digit) : 0과 1로 이루어진 코드를 이진코드라 함
소스 코드(source code)
파이썬(Python)
- 1991년 귀도 반 로섬(Guido van Rosum)이 발표한 프로그래밍 언어
파이썬의 장점
- 문법이 간단해서 배우기 쉬움
- 많은 사람이 사용하고 있어서 다양한 분야에서 활용할 수 있음(웹 서버, 해킹 도구, IOT, 인공지능 등)
- 대부분의 운영체제(윈도우, 맥, 리눅스)에서 같은 방법으로 사용 가능함
파이썬의 단점
- C언어 보다 10~350배 느림
- 쉽게 사용할 수 있다는 성질과 빠르다는 성질이 반비례 함
- 파이썬은 쉽게 이용가능하나 느리고, C는 어렵지만 빠름 거대한 게임은 C++, C#등의 프로그래밍 언어를 사용함
🔎 파이썬을 배우기 위해 준비해야 할 것들
텍스트 에디터(text editor)
- 글자를 입력할 수 있는 모든 종류의 프로그램
- 메모장도 텍스트 에디터가 가능하나, 프로그래밍 작성 시 사용은 가능하나 프로그래밍 언어를 쉽게 작성할 수 있도록 도와주는 텍스트 에디터를 사용하는 것이 좋음
- 텍스트 에디터의 종류에는 Visual Studio Code, Sublime Text, Atom등이 있음
개발환경(development environment)
- 컴퓨터, 텍스트 에디터, 파이썬 인터프리터 등과 같이 프로그래밍을 할 수 있는 환경
- 텍스트 에디터를 포함해서 컴파일러 버전과 같은 개발 플랫폼을 말함
- 웹 프로그래밍에선 웹 브라우저도 개발 환경이 됨
- 개발 환경이 달라지면 프로그램의 작동 결과가 다를 수 있음
통합 개발 환경(IDE; Integrated Development Environment)
- 텍스트 에디터와 코드 실행기, 이 두가지를 모두 포함하고 있는 프로그램
- 프로젝트 생성, 자동 코드 완성, 디버깅 기능을 제공하는 환경을 말함
Ex) Java의 Eclipse, C언어의 Visual Studio
* 디버깅 : 프로그램 내의 코드 오작동을 찾아내는 것
코드실행기
- 텍스트 에디터로 만든 코드를 실행할 수 있는 것
인터프리터(interpreter)
- 프로그래밍 소스 코드를 곧바로 실행해 주는 프로그램
- 한 번에 코드 한 줄씩 읽어 실행
- 파이썬 코드를 실행할 수 있는 도구는 파이썬 인터프리터라 함
대화형 셸(interactive shell)
- 컴퓨터와 상호 작용하는 공간이라는 의미에서 대화형 셸이라고 부름
- 프롬프트라고 불리는 >>>에 코드를 한 줄 한 줄 입력하면 곧바로 실행결과를 볼 수 있음
🔎 파이썬 용어들
문장(statement)
- 표현식이 하나 이상 모인 것
- 파이썬에서는 한 줄이 하나의 문장이 됨
- 문장들이 모이면 프로그램(program)이 됨
표현식(expression)
- 어떠한 값을 만들어 내는 간단한 코드
- 값은 숫자, 수식, 문자열 등과 같은 것을 의미함
- +, -와 같이 기호가 아무것도 없이 있는 경우 즉, 어떠한 값도 만들어 낼 수 없으면 표현식이 아님
키워드(keyword)
- 의미가 부여된 특별한 단어
- 언어 내에서 문법적인 용도로 사용되고 있는 단어
- 사용자가 지정하는 이름에는 사용 불가
- 단어가 키워드인지 아닌지 확인하고 싶을 경우에는 아래의 코드를 사용해서 확인한다.
import keword
print(keyword.kwlist)
식별자(identifier)
- 함수나 변수의 이름을 붙일 때 사용하는 단어
식별자를 만들 때는 특별한 규칙을 따라야 함
- 키워드를 사용하면 안 됨
- 특수 문자는 언더 바(_)만 허용됨
- 숫자로 시작하면 안 됨
- 공백을 포함할 수 없음
식별자 종류
- 스네이크 케이스(Snake_case)
- 단어 사이에 _기호를 붙여 맏든 식별자
- 스네이크 케이스로 작성되어 있고 뒤에 괄호가 붙어 있으면 함수
- 스네이크 케이스로 작성되어 있고 괄호가 없으면 변수
Ex) item_list, login_status, roate_angle
- 캐멀 케이스(CamelCase)
- 단어들의 첫 글자를 대문자로 만든 식별자
- 클래스 식별자를 만들 때 사용함
- 캐멀케이스로 작성되에 있으면 클래스임
Ex) ItemList, LoginStatus, RotateAngle
- 파스칼 케이스(Pascal case)
- 캐멀 케이스 중에서 첫 번째 글자가 대문자인 것
변수(variable)
- 값을 저장할 때 사용하는 식별자
- 이름은 변수이지만 숫자뿐만 아니라 모든 자료형을 저장 가능함
- 선언 : 변수를 사용하려면 식별자는 무엇이고, 어떤 데이터를 가진다라는 것을 알려줘야 하는데, 이는 변수를 '선언한다'라고 함
- 할당 : 변수에 값을 넣는 것을 '할당'한다고 함
--> 메모리에 변수의 값이 들어갈 공간을 할당하므로
- 참조 : 변수에 접근 하는 것을 '참조한다'라고 함
--> 결국 변수가 저장된 메모리에 접근하는 것인데, 이 메모리의 '주소'를 참조한다고 생각하면 됨
🔎 함수(function)
코드의 집함
- 식별자 뒤에 괄호가 붙어 있으면 해당 식별자는 함수
함수 호출
- 함수를 사용하는 것.
- 함수를 호출할 땐느 괄호 내부에 여러 가지 자료를 넣게 되는데, 이러한 자료를 '매개변수'라고 함
- 함수를 호출해서 최종적으로 나오는 결과를 '리턴값'이라고 함
함수 선언(정의)
- 함수가 어떤 매개변수를 받아 어떤 동작을 하고 어떤 값을 반환할지 기술하는 것
- 프로그램 실행에는 영향이 없음
- 코드에 설명을 붙이기 위해서 사용하는 것
- 주석으로 처리하고자 하는 부분에 #을 붙여 처리함
- 여러줄 주석을 하고 싶으면 """또는 '''를 사용해서 사용함
"""
안녕하세요
혼공단 10기에 참여하게 되었습니다.
"""
'''
6주동안 다들
잘 부탁드립니다
'''
연산자(operator)
- 연산에 사용되는 표시나 기호
- 스스로 값이 되는 것은 아니고 값과 값 사이에 무언가 기능을 적용할 때 사용하는 것
- 단독으로 쓰일 때는 아무 의미를 갖지 못 함
리터럴(literal)
- 소스코드 내에서 직접 입력된 값
- 어떠한 값 자체를 의미함
- 자료(data)라고도 함
출력: print()
- 출력을 하고 싶을 때 print()함수를 사용하여 출력함
- 함수의 괄호 안에 출력하고 싶은 것을 나열해서 사용함
- 하나만 출력하고 싶으면 1개만 입력하고 여러 개 출력하고 싶으면 여러 개 연결해서 적으면 됨
print(출력1, 출력2, ...)
print("Hello Python Programming...!"
print("혼공단", "10", "기")
줄바꿈하기
- print()함수 괄호 안에 아무것도 입력하지 않으면 줄바꿈을 함
print()
🔎 자료형과 문자열
자료형(data type)
- 자료의 형태
- 자료형에 따라 컴퓨터가 처리하는 방법이 달라짐
숫자
- 소수점이 없는 정수형과 소수점이 있는 실수형으로 구분
- 사칙 연산자(+, -, *, /)와 정수 나누기 연산자(//), 나머지 연산자(%), 제곱 연산자(**) 사용
문자열(string)
- 문자의 나열
- 큰따옴표 혹은 작은따옴표로 입력
문자열 연결 연산자(+), 문자열 반복 연산자(*), 문자열 선택 연산자([ ]), 문자열 범위 선택 연산자([:]) 사용
불(bool)
- True와 False를 나타내는 값
- 반드시 첫 글자는 대문자
자료형 확인하기
- type()함수를 사용하여 괄호 내부에 자료를 넣으면 그 자료가 어떤 자료형을 가지고 있는지 확인 가능함
문자열 만들기
- 큰따옴표(")로 감싸서 만들거나 작은따옴표(')로도 문자열을 만들 수 있음
print("안녕하세요")
print('안녕하세요')
문자열 내부에 따옴표 넣기
- 큰따옴표를 넣고 싶으면 작은따옴표 안에 큰따옴표를 사용함
- 작은따옴표를 넣고 싶으면 큰따옴표 안에 작은따옴표를 사용함
print('"안녕하세요"라고 말했습니다')
print("'안녕하세요'라고 말했습니다.")
이스케이프 문자(escape character)
- 역슬래시() 기호와 함께 조합해서 사용하는 특수한 문자를 의미함
이프케이프 문자 종류
- \" : 큰따옴표를 의미함
- \' : 작은따옴표를 의미함
- \n : 줄바꿈을 의미함
- \t : 탭을 의미함
- \ : 역슬래시를 의미함
print("\'안녕하세요\'라고 말했습니다.")
print("\"안녕하세요\"라고 말했습니다.")
print("안녕하세요\n라고 말했습니다.")
print("안녕하세요\t라고 말했습니다.")
print("안녕하세요\\라고 말했습니다.")
여러 문자열 만들기
- 큰따옴표 또는 작은따옴표를 세 번 반복한 기호를 사용함
- Enter를 누르는 곳마다 줄바꿈이 일어남
- 줄바꿈 없이 나타내고 싶으면 \기호를 사용함
print("""안
녕
하
세
요""")
print("""\
안
녕
하
세
요\
""")
문자열 연산자
- + : 문자열 연결 연산자
- * : 문자열 반복 연산자
print("안녕" + "하세요")
print("안녕" * 2)
문자선택 연산자 인덱싱([])
- 문자열 내부의 문자 하나를 선택하는 연산자
- 대괄호[]안에 선택할 문자의 위치를 지정함 이 숫자를 인덱스(index)라 함
- 제로 인덱스(zero index)형식을 따름(0부터 시작)
- 맨 뒤의 내용을 선택하고 싶으면 -1부터 시작함
print("안녕하세요" [0])
print("안녕하세요" [-1])
문자열 범위 선택 연산자 슬라이싱([:])
- 문자열의 특정 범위를 선택할 때 사용하는 연산자
- 범위는 대괄호 안에 위치를 콜론(:)으로 구분해서 지정함
- 마지막 숫자를 포함하지 않음
- 뒤의 값을 생략하거나 앞의 값을 생략할 경우 지정한 범위부터 끝까지, 처음부터 지정한 범위까지임을 의미함
print("안녕하세요" [0:2])
print("안녕하세요" [:3])
print("안녕하세요" [2:])
🔎 숫자
정수형(int)
실수형(float)
부동 소수점/실수(floating point)
- 소수점이 잇는 실수 데이터를 저장하는 방식
- '부동'은 '떠다니다'의 의미. 소수점이 떠다닌다는 의미에서 부동 소수점이라고 함
- 최상위 비트(MSB: Most Significant Bit)를 부호로 결정
- 최상위 비트가 0이면 양수, 1이면 음수
숫자 연산자
- + : 덧셈 연산자 (숫자 + 숫자)
- - : 뺄셈 연산자 (숫자 - 숫자)
- * : 곱셈 연산자 (숫자 * 숫자)
- / : 나눗셈 연산자 (숫자 / 숫자)
- // : 정수 나누기 연산자(숫자 // 숫자)
- % : 나머지 연산자
- ** : 제곱 연산자
연산자 우선순위
- 곱셈과 나눗셈이 있는 경우 : 곱셈, 나눗셈 먼저
- 같은 우선순위를 가지는 연산자 : 왼쪽에서 오른쪽
- 괄호가 있는 경우 : 괄호 먼저
- 문자열도 위와 동일함
에러 종류
- IndexError(index out of range) 예외 : 리스트/문자열의 수를 넘는 요소/글자를 선택할 때 발생
- Syntax Error(구문오류) : 작성한 코드에 뭔가 문제가 있어서 아예 실행조차 되지 않는다는 의미. 대표적인 오류
- TypeError 예외 : 서로 다른 자료를 연산할 경우에 나타남
🤔 기본미션 p. 101 3~5번 실행 결과 쓰고 인증하기
3. 다음 프로그램의 실행 결과를 예측해 보세요.
>>> print("# 연습 문제")
>>> print("\\\\\\\\")
\\\\
>>> print("-" * 8)
--------
4. 다음 프로그램의 실행 결과를 예측해 보세요. 그런데 이 예제를 실행하면 오류가 발생합니다. 어떤 오류가 발생합니다. 몇 행에서 어떤 오류가 발생할까요? 그리고 그 이유는 무엇인지 적어 보세요.
>>> print("안녕하세요"[1])
녕
>>> print("안녕하세요"[2])
하
>>> print("안녕하세요"[3])
세
>>> print("안녕하세요"[4])
요
>>> print("안녕하세요"[5])
IndexError: string index out of range
5. 다음 프로그램의 실행 결과를 예측해 보세요
>>> print("안녕하세요"[1:3])
녕하
>>> print("안녕하세요"[2:4])
하세
>>> print("안녕하세요"[1:])
녕하세요
>>> print("안녕하세요"[:3])
안녕하