입력
type에 따른 입력값을 변수에 할당하기
사용자로부터 입력받는 값의 자료형은 String형이다.
이 점을 유의하여 원하는 값으로 형변환하여 할당한다.
str_given = input() # 문자열
int_given = int(input()) # 정수
float_given = float(input()) # 실수
separator를 기준으로 입력값의 배열 생성하기
split() 내장함수는 문자열을 separator를 기준으로 배열을 반환한다.
parameter로 문자열 형태의 separator를 넘기면 이를 기준으로 입력값의 각 원소를 분할하여 배열을 반환해준다.
split1 = input().split() # 공백을 기준으로 element 배열 생성
split2 = input().split(":") # ":"를 기준으로 element 배열 생성
split3 = list(map(int, input().split())) # 공백을 기준으로 정수값의 배열 생성
split4 = [input().split() for _ in range(3)] # 3번 공백을 기준으로 입력받고 배열을 생성
split5 = [list(map(int, input().split())) for _ in range(4)]
# 하나의 배열에 공백으로 입력받은 int값들의 배열을 4개 추가한 2중 배열을 list comprehension으로 받을 수 있다.
각 변수에 공백을 기준으로 입력값을 할당하기
a, b = tuple(input().split()) # 공백을 기준으로 각 입력을 a, b에 할당
a, b = tuple(map(int, input().split())) # 공백을 기준으로 정수값을 a, b에 할당
출력
print()
print() 내장함수를 통해 출력이 가능하다.
default로 자동 줄바꿈(\n)이 적용되어 있으므로 end 옵션을 통해 출력 마지막을 값 설정이 가능하다.
print("Hello World", end=" ") # 자동 줄바꿈(\\n) 해제하고 원하는 문자열을 기준으로 출력
f-string으로 문자열 포맷팅하기
파이썬 버전 3.6 부터 사용할 수 있는 기능으로 변수에 해당하는 값을 보다 직관적이고 간편하게 출력이 가능하다.
a, b = 1, 2 # 정수
c = 3.141592 # 실수
print(f"{a} + {b} = {a + b}") # "1 + 2 = 3"
print(f"{c:.3f}") # 3.142 (셋째 자리에서 반올림)
배열
배열 내장함수
- sum(): 원소의 합을 반환한다.
- max(): 원소 중에서 가장 큰 값을 반환한다.
- min(): 원소 중에서 가장 작은 값을 반환한다.
- len(): 배열의 길이를 반환한다.
- median(): statistics 라이브러리에 있는 median() 함수를 통해 오름차순을 기준으로 중앙값을 반환한다.
import statistics as st
arr = [1, 2, 3]
sum(arr) # 합 => 6
max(arr) # 최대값 => 3
min(arr) # 최소값 => 1
len(arr) # 배열의 길이 => 3
st.median(arr) # 오름차순 기준 중앙값 => 2
배열 함수
- append(element): 배열 뒤에 element를 추가한다.
- pop(index): index에 해당하는 원소를 제거한다. index를 넘기지 않으면 가장 뒤에 원소값을 제거한다.
arr = [1, 2, 3]
arr.append(4) # arr = [1, 2, 3, 4]
arr.pop() # arr = [1, 2, 3]
slicing
특정 index를 통해 arr[start:end:step] 기준으로 배열을 slicing할 수 있다.
arr = [1, 2, 3, 4, 5]
arr[::-1] # [5, 4, 3, 2, 1] reversed_arr
arr[:3] # [1, 2]
arr[3:] # [4, 5]
arr[-1] # 5, 마지막 원소
counting 배열
0으로 초기화된 배열을 생성하여 특정 배열의 원소에 해당하는 index에 접근하여 counting 할 수 있다.
count_arr = [0] * 7
arr = list(map(int, input().split()))
## 개수 세기
for elem in arr:
count_arr[elem] += 1
탐색
- String in Array : 특정 문자열이 배열에 있는지 boolean을 반환한다.
- String not in Array : 특정 문자열이 배열에 없는지 boolean을 반환한다.
- Array.index(String) : 문자열이 배열에 몇 번째에 있는지 가장 첫번째 index를 반환한다. 없을 경우 ValueError가 발생한다.
- Array.count(String) : String이 배열에 몇개 있는지 반환한다.
word = ['A', 'P', 'P', 'L', 'E']
print('L' in word) # True
print('L' in word) # False
print(word.index('P')) # 1
print(word.count('P')) # 2
2차원 배열 원하는 방향 순회하기
오른쪽으로 탐색하기
arr = [[1,2,3,4],[5,6,7,8]]
for y in range(2):
for x in range(4):
print(arr[y][x], end=" ")
print() #[[1, 2, 3, 5], [5, 6, 7, 8]]
아래쪽으로 탐색하기
arr = [[1,2,3,4],[5,6,7,8]]
for x in range(4):
for y in range(2):
print(arr[y][x], end=" ")
print() # [[1, 5], [2, 6], [3, 7], [4, 8]]
거꾸로 탐색하기
arr = [[1,2,3,4],[5,6,7,8]]
for y in range(2):
for x in range(4-1,-1,-1):
print(arr[y][x], end=" ")
print() # [[4, 3, 2, 1], [8, 7, 6, 5]]
문자열
대문자, 소문자 변환 및 판단하기
# 대문자, 소문자 변환
str = 'a'
str.upper() # 'A'
str.lower() # 'a'
# 대문자, 소문자 판단
str = 'a'
str.isupper() # False
str.islower() # True
separator를 기준으로 배열을 문자열로 합치기
given_input = "Hello Python"
''.join(given_input.split()) # 공백을 기준으로 배열에 담고 이를 다시 공백 없이 join으로 합친다. => HelloPython
특정 문자 위치 찾기
# 문자열에 특정 문자 위치 찾기(index(), find())
# index()
str = 'abcde'
str.index('f') # ValueError 발생 때문에 in 키워드로 해당 문자가 있는지 먼저 판단하고 index를 사용해야한다.
if('f' in str):
str.index('f')
else:
print('Error!')
# find() 있으면 index, 없으면 -1
print(str.find('f')) # -1
print(str.find('b')) # 1
특정 문자 변경하기
# 문자열에서 특정 문자열 변경
# 문자열은 immutable 즉, 변할 수 없으므로 list로 변경하여 값을 재할당하고 다시 join한다.
str = 'abcde'
arr = list(str)
arr[2] = 'b'
print("".join(arr)) # abbde
문자 제거하기
# 문자열내 문자제거
str = 'abcde'
arr = list(str)
arr.pop(2)
print(arr) # ['a','b','d','e']
문자와 아스키코드 서로 변환하기
# 문자 => 아스키코드
print(ord('A')) # 65
# 아스키코드 => 문자
print(chr(65)) # 'A'
숫자, 문자 판별하기
str = 'abc'
print(str.isalpha()) # True
numbers = '12345'
print(number.isdigit()) # True