Python

Python 기초 문법 <문자열, 숫자처리, 문자열 처리, 슬라이싱>

sogummi 2023. 3. 21. 14:51

 

<숫자형 자료형>
1) int : 정수 값 저장 자료형 (0, 1, 100, -2 등)
2) float : 부동소수점형, 실수 값 저장 자료형 (3.14, -1.7, 0.0 등)
3) complex : 복소수 값 저장 자료형 a+bj (1+3j, 4-3j) 

  • 숫자 자료형 계산 해보기 
a = 10           # int
b = 3.14         # float
c = 1 + 2j       # complex
d = a + b        # float 
e = a / b        # float 
f = a // b       # float
h = a ** 2      
# d =  13.14, e = 3.184713375796178
# f = 3.0,  h = 100
 

  / 연산자 : 나눗셈의 결과,   // 연산자 : 나눈 몫의 결과 

e = 4 / 2
print(e)
f = 4 // 2
print(f)
g = 3 % 4
print(g)
g = 10 % 3
print(g)

숫자 자료형에 대해서 공부하다가 재밌는 점 발견.. e와 f의 출력 값은 동일할 것 같지만 동일하지 않다. 파이썬3기준 나눗셈 연산자(/) 결과는 항상 부동소수점 형태(float형)로 반환되고, //연산자는 나누는 숫자가 모두 int형이면 결과도 int형임 (하나라도 float형이면 결과도 float형!) 그렇기 때문에 e와 f는 각각 2.0과 2로 출력된다.
g같은 경우에는 모듈연산자라고 부른다. 나눗셈 후 나머지 값을 저장하는 연산자다. 3%4연산은 3을 4로 나눌 수 없기 때문에 3을 반환한다. 10%3의 경우 10을 3으로 나눈 나머지인 1이 결과가 된다. g도 마찬가지로 하나라도 float형이면 결과도 float형이 됨. 

<문자열 자료형과 문자열 처리함수> 

# 문자열 자료형
print("Hello World!")
print('Hello World!')
print('hi '*5)
# 문자열 삽입과 처리함수 1
name = "Soeun"
greeting = 'Hello, My name is ' + name + '!'
length = len(greeting)
find = greeting.find('o')
index = greeting.index('o')
index1 = greeting.index('o', index + 1)
count = greeting.count('l')
print(greeting)  # Hello, My name is Soeun!
print(length)  # 24
print(find)   # 4
print(index)  # 4
print(index1)  # 19
print(count)  # 2

추가할 문자열 변수를 기존 문자열 중간에 삽입하고 싶다면 '+' 기호를 사용한다.
만약 문자열에 숫자가 담긴 변수를 삽입하고 싶다면 + str(age) + 같이 str로 문자열로 변환시켜줘야 한다.
len(greeting)은 문자열 길이를 구하는 함수
greeting.find('o')는 처음 o가 나타나는 인덱스를 구함 
find()와 index()함수는 둘다 문자열에서 특정 문자열을 검색하지만 검색대상이 존재하지 않는 경우 처리방식이 다름
+) 'find'함수는 찾는 문자열이 없다면 -1을 반환하고 'index'함수는 ValueError 예외를 발생시킴 
greeting.count('l')는 l이 몇 번 나타나는 지를 구함 -

# 문자열 처리 함수 2
python = "We need Python"  

print(python.lower())   # we need python
print(python.upper())   # WE NEED PYTHON
print(python[0].isupper())  #True
print(python.replace("Python", "Java"))  # We need Java

- lower : 소문자 출력
- upper : 대문자 출력
- [].isupper : []안의 문자가 대문자인지
- replace : 단어 변경

+) 여러줄의 문자열 나타내는 법 

a = """
Hello World!
We need Python
"""
print(a)

""" (또는 ''') : triple-quoted string 이라해서 여러 줄의 주석처리를 할 때 사용할 수 있고 변수값에 """을 사용한다면 여러줄의 문자열로 출력할 수 있다. 위 코드는 문자열 아래위로 개행이 되어서 출력된다.

< 참 / 거짓 구별 boolean> 

# boolean (참 / 거짓)
print(10 > 2) #True
print(10 < 2) #False
print(False)   #False
print(not True)  #False
print(not (2 > 5))  #True
print((5 > 0) & (5 < 10)) #True
print((5 > 0) | (13 < 5)) #True
print((7 < 8 < 9)) #True
* &는 and로 |는 or로 바꿔쓸 수 있음 (의미 동일)

 

<숫자 처리 함수>

print(abs(-5)) #5
print(pow(2, 3))  #8
print(max(3, 5, 10))  #10
print(min(3, 5, 10))  #3
print(round(3.14))   #3
print(round(3.6))   #4

- abs : 절댓값 구하기
- pow: 지수제곱
- max: 최댓값
- min: 최소값
- round: 반올림 
*math 라이브러리를 사용한다면 더 많은 숫자처리가 가능 

<random 함수> 

from random import *

print(random()) #0.0 ~ 1.0 사이 랜덤 값
print(int(random()*10) + 1) # 1~10 사이의 랜덤 값
print(int(random()*37) + 1) # 1~37이하의 랜덤 값
print(randrange(1, 45)) # 1~45미만의 랜덤 값
 

*random과 randrange의 차이
- random 부동소수점 랜덤 값 반환 (정수형 반환하려면 위 코드처럼 여러가지 추가해주면 됨)  
- randrange 정수 랜덤 값 반환

<슬라이싱>

# 슬라이싱
a = "971234-2456789"
print(a[:6])  # 0~6직전까지
print(a[7:])  # 7부터 끝까지
print(a[-7:])  # -1에서 7번째부터 시작해서 끝까지

print(a[7])  # 2
print(a[0:2])  # 97
print(a[2:4])  #12 

 

<문자열 포맷>
- 문자열 포맷(format)이란 문자열 내에 변수나 값을 넣어 문자열을 동적으로 생성함
1.  f-strings (python 3.6 부터 지원)
문자열의 중괄호{} 내에 변수를 넣을 수 있음 

name = "Harry"
age = 25

# f-string 사용
greeting = f"My name is {name} and I am {age} years old."
print(greeting)

2. format() 함수

greeting = "My name is {} and I am {} years old.".format("Harry", 25)
print(greeting)

greeting = "My name is {2} and I am {1} years old.".format("Harry", 25, "Sam")
print(greeting)

3. % 연산자 활용

name = "Harry"
age = 25

greeting = "My name is %s and I am %d years old." % (name, age)
print(greeting

%s 는 문자열 %d는 정수 %c 는 문자를 넣을 수 있음 (%s로 모두 표현 가능) 

=> 3가지 방법 중에선 f-strings 방법이 가장 직관적이고 편리하기 때문에 문자열 포맷 시 f-strings를 쓰는 것 권장 

 

<탈출문자> ; escape 코드

탈출문자란..? 문자열 안에서 특수한 기능을 수행하도록 하는 문자

# 줄바꿈
print("Hello\nWorld")

# 탭 문자 출력
print("Python\tis\tawesome")

# 백스페이스 출력
print("Hello\bWorld")

# 캐리지 리턴
print("Python is awesome \rJava")

# 역슬래시 출력
print("\\\\ This is a backslash")

# 작은 따옴표 출력
print("Python\'s awesome")

# 큰 따옴표 출력
print("\"Python is awesome\" he said.")

# 벨 소리 출력
print("\aBeep!")

# 폼 피드 출력
print("Hello\fWorld")

# 수직 탭 출력
print("Python\vis\vawesome")