주제
1. 키워드
2. 자료형(Data type)
3. 문자열
4. 입력과 출력
1. 키워드
특별한 의미가 부여된 단어로, 파이썬이 먼저 쓰겠다고 예약한 것이다.
키워드 목록은 다음과 같다.
False/True/None/and/as/assert/break/class/continue/def/del/elif/else/except/finally/for/from/global/if/import/in/is/lambda/nonlocal/not/or/pass/raise/return/try/while/with/yeild
다음과 같은 코드를 통해 키워드를 확인할 수 있다.
import keyword
print(keyword.kwlist)
식별자
파이썬에서 이름을 붙일 때 사용하는 단어로, 변수나 함수의 이름으로 사용되는 것이다.
변수
내가 값을 저장하는 것에 따라 변하는 수이다.
값을 저장할 때 사용하는 식별자이다.
#변수
pi = 3.1415 #여기서 pi가 식별자이다.
#함수
def function(param1, param2): #여기서 function이 식별자이다.
return param1 + param2
변수의 이름을 붙일 때 규칙이 존재한다.
1. 키워드는 사용할 수 없다.
2. 숫자로 시작하면 안된다.
3. 공백을 포함하면 안된다.
예시-
apple (O)
_apple2 (O)
ApPple3 (O)
4apple (X)
red apple (X)
delicious_apple (O)
_ (O)
스네이크 케이스와 캐멀 케이스
변수 이름을 짓는 방식은 스네이크 케이스와 캐멀 케이스로 나뉜다.
여러 명의 개발자가 협업할 때, 헷갈리지 않기 위해서 통상적인 규칙이 존재한다.
이름의 모양에서 유래해서, '_'가 뱀같이 연결되어 있다고 해서 스네이크 케이스, 대문자가 낙타의 등같다고 해서 캐멀 케이스라고 한다.
스네이크 케이스 | 캐멀 케이스 |
red_apple | redApple |
input_data | inputData |
보통, 클래스는 캐멀 케이스로 나타내며, 대문자로 시작한다. 함수나 변수는 스네이크 케이스로 나타내며, 소문자로 시작한다.
변수와 함수는 괄호의 유무로 구분할 수 있다.
연산자(Operator)
+, -, *, /와 같이 계산을 위한 기호를 연산자라고 한다.
파이썬에서는 다음과 같은 연산자를 제공한다.
+ : 덧셈
- : 뺄셈
* : 곱하기
/ : 나누기
// : 몫
% : 나머지 (모듈러 연산)
주석
프로그램에 전혀 영향을 주지 않는 코드이다.코드에 대한 설명을 적을 수 있다. 혹은, 개발 중에 코드를 잠시 생략하고 싶을 때 사용한다.
###한줄 주석 활용
num1 = 10
num2 = 20
#print("계산") << 주석
sum = num1 + num2
###여러 줄 주석 활용
num1 = 10
num2 = 20
""" <<주석 시작
if (num1 > num2): ㅣ
print("num1 > num2") ㅣ
else: ㅣ
print("num1 < num2") ㅣ
""" #<<주석 끝
sum = num1 + num2
2. 자료형(Data type)
파이썬은 자료형을 명시적으로 나타내진 않지만, 크게 4가지로 표현할 수 있다.
정수형: int, long (1,2,3 ...)
실수: float, double (1.1, 2.3, 3.14 ...)
문자: str (string) ('a', 'aa, 'aaa' ...)
불리안: bool (True, False)
각 정수형은 크기가 다르다.
variable = 1.5
type(variable) #variable의 자료형을 반환하는 함수 type()
print(type(variable)) #variable의 자료형을 출력
위와 같이, variable=1.5 을 하게 되면, variable은 실수형 변수가 된다.
프로그램 개발 중에, 의도치않게 다른 자료형이 들어갈 수도 있다.
이 때, 내가 원하는 자료형으로 바꾸는 것을 "형변환 혹은 캐스팅(casting)"이라고 한다.
#묵시적 형변환
variable = 1.5
print(type(variable) # <class 'float'>
variable = 1
print(type(variable) # <class 'int'>
#명시적 형변환
variable = 1.5
variable = int(variable)
print(variable) # 1
print(type(variable)) #<class 'int'>
오버플로우와 언더플로우
위와 같이 변수를 선언하면 메모리에 일정 공간을 할당해 값을 저장하게 된다.
파이썬은 자동으로 메모리 공간을 할당하고, 필요에 따라 더 할당한다. (동적 메모리 할당)
대부분의 경우, 파이썬은 오버플로우, 언더플로우를 크게 고려하지 않아도 된다.
import sys
print("정수형 int의 크기:", sys.getsizeof(int)) #416
print("실수형 float의 크기:", sys.getsizeof(float)) #416
print("boolean형 bool의 크기:", sys.getsizeof(bool)) #416
print("list의 크기:", sys.getsizeof(list)) #416
print("tuple의 크기:", sys.getsizeof(tuple)) #416
print("dictionary의 크기:", sys.getsizeof(dictionary)) #416
기본적으로 넉넉하게 값을 갖고, 들어오는 요소에 따라 사이즈를 변경한다.
3. 문자와 문자열
기본적으로 문자는 한 글자, 문자열은 여러 글자가 된다.
문자: 'a', 'b', 'c', 'd' ...
문자열: "hi", "hello", "bye" ...
문자는 따옴표, 문자열은 쌍따옴표로 감싸서 표현할 수 있다.
어제 친구가 "안녕!" 이라고 말했다. 라는 문장은 어떻게 출력할까?
print("어제 친구가'안녕'이라고 말했다.")
이렇게 쌍따옴표와 따옴표는 구분해서 사용할 수 있다.
굳이, 안에 있는 따옴표를 쌍따옴표로 나타내고 싶을 땐 다음과 같은 방법을 사용할 수 있다.
이스케이프 문자(\)
이스케이프(escape)는 탈출한다는 의미를 갖고 있다.
출력하는 과정에서 '\', 따옴표 등 출력을 바로 할 수 없는 문자를 출력하거나, 특정 기능을 수행하게 하는 것이다.
이스케이프 문자 | 기능 |
\n | 개행 |
\t | 탭 |
\\ | 역슬래시 출력 |
이 외에도, 다양한 이스케이프 문자가 존재한다.
이스케이프 문자를 활용하면 다음과 같이 표현할 수 있다.
print("어제 친구가 \"안녕\"이라고 말했다.")
오버로딩
정확한 표현은 아니지만, 간단하게 말해서, 똑같은 모양을 갖고 있지만 다른 기능을 하는 것을 오버로딩이라고 한다.
우리가 아까 배운 연산자(+, *)는 숫자에 사용하면 수학적인 계산을 하지만, 문자열에 사용하면 다른 기능을 한다.
+는 피연산자가 숫자이면 덧셈을 해주지만, 문자열이라면 문자열을 연결해주는 역할을 한다.
print("안녕" + "하세요") #안녕하세요
*는 문자열에 사용하면 곱셈 대신 반복을 하게 된다.
print("안녕"*5) #안녕안녕안녕안녕안녕
인덱스
문자열 내부의 문자를 하나 선택하는 연산자이다.
문자열 뿐만 아니라, 배열, 리스트 등 어디서든 다양하게 사용된다.
대괄호([ ]) 안에 숫자로 각 문자의 위치를 확인할 수 있다.
*컴퓨터에선 항상 0부터 시작한다는 것을 유의해야 한다.
안 녕 하 세 요
[0] [1] [2] [3] [4]
앞에서부터 0~4 까지 5개의 문자를 표현할 수가 있다.
반대로 마지막 문자부터 거꾸로 선택할 수도 있다. 이 땐, -1부터 시작하게 된다
안 녕 하 세 요
[-5] [-4] [-3] [-2] [-1]
문자열 슬라이싱
[ : ] 형태로 문자열을 슬라이싱할 수 있다.
슬라이싱한다는 말은, 일정 범위를 선택한다는 뜻이다.
print("문자열슬라이싱"[0:2]) #문자
[시작 인덱스 : 마지막 인덱스-1] 과 같이 표현된다.
즉, 0:2 이지만, 0과 1번 인덱스 문자열만 선택되어 출력된 것이다.
다음과 같이 끝까지 표현하는 방법도 있다.
print("문자열슬라이싱"[:3]) #문자열
print("문자열슬라이싱"[3:]) #슬라이싱
위와 같이 처음부터 일정 범위까지, 일정 범위부터 끝까지 표현할 수 있다.
만약, 인덱스를 잘못 선택하게 되면 IndexError(index out of range) 같은 에러를 만날 수 있다.
리스트나 문자열을 다룰 때 자주 실수하는 부분이므로 주의할 필요가 있다.
문자열 길이 구하기
len() 함수를 사용해서 문자열이나 리스트의 길이를 구할 수 있다.
반복문을 활용할 때 자주 사용되는 함수이다.
a = "안녕"
print(len("a")) #2
출력
print("내용")
print(변수)
print("내용", 변수) # ','로 구분
num = 10
print("변수 num의 값은 ", num, "입니다.") #변수 num의 값은 10 입니다.
#나의 이름은 박찬호입니다. 나이는 50세이고 성별은 남성입니다. 라는 문장 출력하기
print("나의 이름은 박찬호입니다. 나이는 50세이고 성별은 남성입니다.")
print('나의 이름은 "{0}"입니다. 나이는 {1}세이고 성별은 {2}입니다.'.format('박찬호', 50,'남성'))
입력
input() 함수를 사용해서 사용자로부터 값을 입력받을 수 있다. (키보드)
다만, 입력된 값은 모두 str 형(문자열)이므로, 숫자를 입력받고 싶으면 형변환을 해야 한다.
name = input()
age = int(input())
만약, 사용자가 실수로 age에 이름을 입력하면 어떻게 될까?
ValueError: invalid literal for int() with base 10: "이름" 과 같은 ValueError가 발생한다.
이런 상황에 대처하는 것을 예외 처리라고 한다.
문자열과 관련한 유용한 함수와 연산자
find()와 rfind() 함수
문자열 내부에 특정 문자가 "어디에" 있는지 확인하는 함수이다.
특정 문자를 찾은 처음 위치의 인덱스를 반환한다. find()는 왼쪽부터, rfind()는 오른쪽부터 탐색한다.
"안녕안녕하세요".find("안녕") # 0
"안녕안녕하세요".rfind("안녕") # 2
in 연산자
문자열 내부에 어떤 문자열이 "있는지" 확인하는 연산자이다.
반복문에서 유용하게 사용되는 연산자이다.
"안녕" in "안녕하세요" #True
"잘가" in "안녕하세요" #False
split() 함수
문자열을 특정 문자로 자를 때 사용하는 함수이다. 괄호 안에 있는 값(매개변수)를 기준으로 잘라준다.
잘린 값은 '리스트' 형태로 반환된다. 여기서는 모양만 확인하고 넘어간다.
"10 20 30 40 50".split() #["10", "20", "30", "40", "50"]
"1,2,3,4".split(',') #["1","2","3","4"]
split() 과 map()를 활용하면 여러 개의 값을 한 번에 입력 받아서 저장할 수 있다.
자세한 내용은 리스트를 배운 후에 다룰 예정이다.
num1, num2 = map(int, input().split())
print("num1:", num1)
print("num2:", num2)
# 1 2 입력
# num1=1
# num2=2
'개발 > Python' 카테고리의 다른 글
[Python] 리스트, 딕셔너리, 튜플, 집합 (0) | 2022.06.29 |
---|