TIL 26. python 숫자와 string, boolean

rahula·2021년 6월 1일
0

python

목록 보기
1/10
post-thumbnail

파이썬의 자료형 기초에 대해 배운 점들을 기록합니다. 이 글은 책 점프 투 파이썬을 토대로 작성됐습니다.

숫자

정수(Integer)

파이썬3에서, 정수 타입의 데이터 값에는 크기 제한이 없다. 물론 개인 컴퓨터의 시스템 메모리의 용량만큼 제한받는다.

integer 정수의 타입은 파이썬에서 int로 나타낸다.

my_int = 100
type(my_int) # <class 'int'>

타입변환과 int 함수

파이썬이 int함수를 다루는 데엔 재밌는 부분이 있다. 파이썬은 사칙연산에서는 데이터 타입에 대해서 엄격하다가 int함수 안에 들어가게 되면 변환을 해준다. 그리고 오직 문자열만 변환을 해준다.

print(1 + "1")
# TypeError: unsupported operand type(s) for +: 'int' and 'str'

literal_int = int("1")
print(literal_int) # 1

int([1]) 
# TypeError: int() argument must be a string or a number, not 'list'

실수(Float)

소수점이 있을 때의 모든 숫자는 float 이다. float함수도 문자열에 대해서만 타입 변환을 해준다는 부분에서 int함수와 같다.

print(type(1.2)) # <class 'float'>

print(float("1.11")) # 1.11

float([1.11])
# TypeError: float() argument must be a string or a number, not 'list'

복소수(Complex Numbers)

실수와 허수를 포함하고 있는 복소수를 의미한다. 파이썬에선 j를 사용해서 허수를 표현한다.

1 + 3j
print(type(1j)) # <class 'complex'>

숫자형 연산자

파이썬의 숫자형 연산자에는 사칙연산을 포함해서 제곱값을 돌려주는**, 나눗셈 후의 나머지를 돌려주는 %. 나눗셈 후 몫을 반환하는(정수 나누기) //가 있다.

a = 10
b = 3

a + b # 13
a - b # 7
a * b # 30
a / b # 3.333333333333333

a ** b # 1000
a % b # 1
a % b # 3

할당 연산자

값을 바꾸고 할당을 하는 과정을 짧게 쓸 수 있게 해주는 연산자가 있다.

a = 100

a += 10 # a = a + 10 과 같다.
print(a) # 110

a -= 1 # a = a - 1 과 같다.
print(a) # 109

a *= 3 # a = a * 3 과 같다.
print(a) # 327

a /= 10 # a = a / 10 과 같다.
print(a) # 32.7

a **= 2 # a = a ** 2과 같다.
print(a) # 1069.2900000000002

문자열

문자열이란 문자, 단어 등으로 구성된 문자들의 집합을 의미한다~

문자열을 표현하는 방법 3가지

  1. 큰따옴표로 양쪽 둘러싸기
"Hello World"

문자열에서 작은 따옴표를 포함하고 싶다면, 큰 따옴표로 둘러싸면 된다.

" 'Hello' World"
  1. 작은 따옴표로 양쪽 둘러싸기
'Hello World'

문자열에서 큰 따옴표를 포함하고 싶다면, 작은 따옴표로 둘러싸면 된다.

" 'Hello' World"

혹은 백슬래시를 이용해서 작은 따옴표와 큰 따옴표 모두를 자유롭게 표현할 수 있다.

" \" Python is fun!\" he says."
' \' Python is fun!\' he says.'
  1. 큰 따옴표 3개를 연속으로 써서 양쪽 둘러싸기
print("Hello \n\n\n World")
# Hello
# 
#
#  World

이스케이프 코드 \n을 사용해서 줄을 바꿀 수 있다. 그러나 읽기에 불편하고 줄이 길어진다.
큰 따옴표 3개짜리 표현을 통해서, 쉽게 문장간의 간격을 표현할 수 있다.

print("""
Hello


 World""")
 
# Hello
# 
#
#  World

문자열 연산자

문자열 더해서 연결하기(Concatenation)

head = "python"
tail = " is fun!"

head + tail
# "python is fun!"

문자열 곱하기

head = "python"
head * 3 # "pythonpythonpython"

문자열 길이 구하기

문자열의 길이는 len함수를 이용해서 구할 수 있다. len함수는 print함수와 같이 파이썬의 기본 내장 함수로 별다른 설정 없이 바로 사용할 수 있다.

my_str = "python is fun!"
len(my_str) # 14

문자열 인덱싱과 슬라이싱

인덱싱(indexing)이란 무엇인가를 가리킨다는 의미이고, 슬라이싱은 무엇인가를 잘라낸다는 의미다.

my_str = "python is fun!"

my_str[0] # p
my_str[1] # y
my_str[-1] # !

인덱스에서 0부터 세는 것은 다른 일반적인 프로그래밍 언어와 같이 파이썬도 마찬가지다.

파이썬은 쉽게 문자열을 슬라이싱할 수 있도록 한다.

my_str = "python is fun!"

my_str[0:6] # python
my_str[0:] # python is fun!
my_str[:6] # python

my_str[:-1] # python is fun
my_str[:len(my_str)] # python is fun!
my_str[:] # python is fun!

문자열[시작 번호 : 끝 번호]일 때 끝 번호에 해당하는 요소는 포함하지 않는다.

문자열 포매팅

문자열 포매팅이란 문자열 안에 어떤 값을 삽입하는 방법이다.

%

문자열 포맷 코드에는 숫자를 넣을 때 쓰는%d와 문자열을 넣을 때 쓰는%s가 있다. 둘 다 특정 변수의 값을 넣을 때 쓸 수 있다.

print("I eat %d apples." % 5) # I eat 5 apples.
name = "Eric"
age = 74
print("Hello, %s. You are %s." % (name, age))
# 'Hello Eric. You are 74.'

그러나 넣어야 할 값이 많아지고 문자열이 길어질수록 가독성이 떨어진다.

str.format()

 "Hello, {}. You are {}.".format(name, age)
'Hello, Eric. You are 74.'

str.format을 쓰면 가독성이 더 높아지지만, 매개변수가 많아지고 문자열이 길어질 수록 가독성이 떨어지는 것은 마찬가지다.

f"" 포매팅

f""포매팅은 str.format()와 비슷하지만, 덜 모호하다.

name = "Eric"
age = 74
f"Hello, {name}. You are {age}."
# 'Hello, Eric. You are 74.'

또한 포매팅 안에서 연산자의 반환값 혹은 함수를 실행하고 받은 반환값을 문자열로 만들 수 있다.

name = "ERIC"
num = 100

print(f"{100 * 10}")
print(f"{name.lower()}")

여러줄을 표현하는 """와 같이 쓰일 수도 있다.

boolean

불(bool) 자료형이란 참과 거짓을 나타내는 자료형이다.
자바스크립트와 달리 파이썬은 맨앞의 알파벳이 대문자다.

True
False

data의 참과 거짓

data에 참과 거짓이 있다는 것은 매우 중요한 특징이며 실제로도 자주 쓰인다.

string, list, tuple, dict 모두 그 안이 비어있는 경우 False로 구분된다. 그 외의 경우는 모두 True이다. 숫자의 경우에는 0이 아닌 모든 값은 True이다. NoneFalse가 된다.

이는 list, tuple, dict를 순회해야 할 때 정말 유용하다.

my_list = [1,2,3,4]

while my_list:
    my_list.pop()
    print(my_list)

bool 함수

bool함수를 사용해서 자료형의 참과 거짓을 식별할 수 있다.

empty_string = ""
my_list = [1,2,3]

bool(empty_string) # False
bool(my_list) # True
profile
백엔드 지망 대학생

0개의 댓글