본문 바로가기
Python

2024.01.03 (수) 자료형, 연산과 구문

by gosikoca 2024. 1. 3.

오늘 배운 내용을 크게 정리해보자면 아래와 같다고 할 수 있을것 같다.

  • 자료형
    • 문자열(str) 자료형
    • 논리(bool) 자료형
    • None 자료형
    • 메서드 채이닝
    • 형변환
  • 연산과 구문
    • 연산자
    • 산술연산
    • 비교연산

1. 문자열

문자열은 정말 신기한 아이였다. 내가 원하는 모습으로 바꿀 수도 있고 사칙연산이 되며 내가 나타내고 싶은 형태로 나타낼 수 있기 때문이었는데 하나씩  보자면.

 

우선 사칙연산이 되기에 기본적으로  + , - , * , % 가 가능하고 나누기는 크게 / , // , % 으로 분리 됨을 알 수 있었다.
/  -> float 형으로 몫 반환
//  -> int 형으로 몫 반환  (항상 내림)
%  -> 나머지를 뜻한다.

 

또한 **(제곱) 도 가능하여 여러 형태들 간의 연산에 대해서 공부해 보았다. 자세한 예시는 코랩 주소를 마지막에 한꺼번에 첨부하겠다.
 

문자열을 공부하면서 중요하고 실수하면 안되겠다고 생각한 포인트는 문자열과 숫자를 나타내는 정수나 실수형의 차이이다. 문자열은 숫자와 다르기에 아래 사진과 같은 실수를 하지 않기 위해서 연산을 진행함 때 주의를 기울여야 한다.

x = 'hello'
y = 'world'
print(x + y) # 출력 : helloworld

x = '10'
y = '20'
print(x + y) # 출력 1020

# 문자열의 곱셈

print(x * 100) # 출력 : 1010101001010101010101010101010101010101010101010101010101010101010101010

 

문자열의 재밌는 부분중 또 한 부분은 인덱싱인데 이것으로 내가 원하는 형태로 마음대로 바꿀 수가 있다.

아래 예시처럼 변수를 설정해서 담아주고 print를 진행할 떄 불러올 단어들을 마음대로 꺼내올 수 있다. 

s = '위니브 월드!'
print(s[0])   # 출력 : '위'
print(s[-1])  # 출력 :  '!'

위의 원리를 잘 활용하면 아래와 같이 내가 원하는 문장이나 단어를 만들기 수월하다.

s = 'weniv CEO licat'
print(s[6:]) # 출력 : CEO licat           원하는 지점부터 전부 출력
print(s[:]) # 출력 : weniv CEO licat      전부 출력
print(s[::-1]) # 출력 : tacil OEC vinew   전부 출력인데 반대로
print(s[::2]) # 출력 : wnvCOlct           전부 출력인데 2개씩 띄어서
s = 'weniv_licat.png'
#1. 출력 weniv_licat.png 만 나오게
#2. 출력 png만 나오게

print(s[:11])  # 출력 :  weniv_licat t

print(s[12:])  #출력 :  png
print(s[-3:])  #출력 :  png

다만 슬라이스 복사는 ID가 달라진다.

s =[1, 2, 3]
ss =s[:]

print(s, ss)
print(id(s), id(ss))

[1, 2, 3]   [1, 2, 3]

137673146026496 137673144804160

 

또 원하는 형태로 바꿀 수 있는 여러 좋은 틀이 있는데 너무 많기에 하나씩 메서드를 소개하자면

lower()               # 전체를 소문자로 바꿔주는 method
 
upper()               # 전체를 대문자로 바꿔주는 method
 
find()                   #문자열을 찾아주는 method    (찾는 문자열이 없으면 -1 로 알려줌)
 
index()                #문자열을 찾아주는 method  ( 찾는 문자열이 없으면 에러로 알려줌 )
 
count()                 #문자열이나 숫자를 셀 때 사용하는 method
 
strip()                    #양쪽 공백을 제거하는 method
 
replace()                #원하는 문자열을 다른 문자열로 대체할 때 사용하는 method
 
split()                      #공백을 기준으로 문자열 나누기(리스트로 반환)
 
join()                        #리스트를 하나의 문자열로 합치기
 
format()                   # 변수를 사용하여 문자열에 유동적으로 값 넣을 떄 사용한다.
 
isdigit()                     # 문자열에 숫자만 있으면 True
 
isalpha()                   # isalpha 문자만 있으면 True
 
rjust()                       #문자열을 지정한 길이로 맞추고, 원하는 길이에서 왼쪽을 원하는 문자로 채우는 method
 
ljust()                       #문자열을 지정한 길이로 맞추고, 원하는 길이에서 오른쪽을 원하는 문자로 채우는 method
 
center()                   #문자열을 지정한 길이로 맞추고, 원하는 길이에서  양쪽을 원하는 문자로 채우는 method
 
zfill()                         # 변수의 자릿수를 설정하고 앞쪽에서 부터 0을채움
 
maketrans()             #  ()안 , 앞 문자열을 , 뒤 문자열로 바꾸어 주는 method
 
translate()               # ()안 변수로 바꾸어 주는 method

 

2. 논리형

 

논리(bool) 자료형은 간단하게 True, False 두가지로 나누어진다.

각각 1, 으로 취급되며 다른 숫자를 넣으면 False가 출력 된다. 또한 == 기호를 통하여 값에 대해서 비교 연산이 가능하다며 bool 타입은 연산도 가능하다.

print(True + True) # 출력: 2
print(False - True) # 출력: -1
print(True / True) # 출력: 1.0
print(True * False) # 출력: 0

 

0으로 1 못나누기에 에러가 발생.

print(True / False) # error   0으로 1 못 나눈다.

 

3. None 자료형

# print 챕터에서 언급된 것 처럼
# None은 print가 아닌 마지막 줄 출력인 경우 출력이 되지 않습니다.
양말상자 = None

확인하고 싶다면 dir 활용하자

dir(None)  # 매직메서드, 메서드확인

None 값은 항상 유일 하기에 ID 값이 변하지 않는다.

x = None
y = None
print(id(x), id(y))        출력 :  100157443888096 100157443888096

 

None을 확인하기 위한 방법 

x = None

print(x == None)    # 출력 : True, 하지만 이 방식은 권장되지 않습니다.
print(x is None)    # 출력 : True, 이 방식을 사용하여 None을 확인하는 것이 좋습니다.

 

4. 형변환

맨 처음 언급한 것과 같이 문자열과 정수형 실수형 등 문자와 숫자의 차이는 코딩에서 굉장히 큰 차이를 불러오기 때문에 주의해야한다. 아래의 예시를 참고하자.

# 잘못된 수행
월급 = input("월급을 입력하세요:")
연봉 = 월급 * 12
print(연봉)

 

월급을 입력하세요:100000000 100000000100000000100000000100000000100000000100000000100000000100000000100000000100000000100000000100000000

# 제대로 수행
월급 = input("월급을 입력하세요:")  # int 로 감싸거나 밑에 월급에서 int 로 타입 바꾸어준다.
연봉 = int(월급) * 12
print(연봉)

 

월급을 입력하세요:10000000 120000000

 

형 변환 정리 

str  ->  int 로 변환 가능하지만

 

문자열을 숫자로 바꾸는건 불가능하다.

 

float  ->  int 로 변환 가능 (소숫점 아래의 값이 버려진다.)

 

bool  ->  int 로 변환 가능

 

None 은  int 형으로 형변환 하면 0 이라고 생각하시는 분이 많지만 None은 int 형으로 변환이 불가능하다.

 

 

 

colab 주소:

https://colab.research.google.com/drive/1s0WEr5-_EwjZ6ENiEWzoxotBcbxr7MvV?usp=sharing