Python은 다양한 프로그램에서 작업할 수 있지만 쉽게 파일을 저장하고 바로 결과를 확인할 수 있는 Google의 Colab을 이용해서 공부 및 실습을 진행했다.
Colab을 작성하기 위해서는 여기서 따로 쓰는 마크업들이 있으니 아래 링크를 통해 여러 마크다운과 단축키와 함께 사용하면 도움이 될 것이다.
(notion에서는 편하게 /만 누르면 나열해줬던 기능들을 일일이 해야된다는 느낌st)
Google Colab 단축키 모음
: https://surfonmedia.tistory.com/1
Colab Markdown
: https://data-jj.tistory.com/18
샾(#) : 한줄 주석.
""" """ : 여러줄 주석. (Colab에서는 안됨.)
들여쓰기 생활화. (python에서는 문법 자체로 인식)
→ 스페이스바 2칸, 4칸, 탭 1칸.
ctrl + enter : 코드 실행. (Colab)
alt + enter : 코드 실행 + 다음 줄 생성. (Colab)
ctrl + / : 주석 처리
주석은 코드의 설명을 덧붙이는데에도 사용하지만 Python의 경우 코드 위에서부터 아래로 순차대로 컴파일 하면서 오류가 생기면 멈추기 때문에 오류가 나타나는 부분의 코드 잠시 주석처리 하는 것으로도 사용하기도 한다.
화면에 출력하게 해주는 코드이다. 숫자를 입력할 시에는 그냥 숫자만 소괄호 안에 넣어주면 되지만 문자로 입력할 때는 따옴표와 함께 작성해야한다.
# 주석 자리~
print("주석 안보이나???")
print("신기하구만")
for 동물 in ("토끼","사자","푸바오","호랑이"):
print(동물) # 들여쓰기 되어있다. 안되면 실행 중 오류 발생.
print("보러갈래요?")
동물이라는 변수를 만들고 그 안에 요소들을 넣을 수 있는데 위 코드를 실행하면
토끼
보러갈래요?
사자
보러갈래요?
푸바오
보러갈래요?
호랑이
보러갈래요?
동물의 요소 하나 + 다음 문장이 짝을 이루어 출력된다.
이것은 print문의 들여쓰기가 같기 때문에 같은 순위로 코드가 진행된다는 것을 의미한다.
하지만 아래의 경우는 어떨까?
for 동물 in ("토끼","사자","푸바오","호랑이"):
print(동물) # 위와 현재 코드 들여쓰기에 따라 출력값 다름.
print("보러갈래요?")
이 코드를 실행하면
토끼
사자
푸바오
호랑이
보러갈래요?
동물이란 변수의 요소들을 모두 보여준 뒤 마지막 문장을 출력하게 된다.
다들 기본적인 사칙연산인 더하기, 빼기, 곱하기, 나누기는 알 것이다. 여기서 추가되는 몇가지 연산자가 있다.
/
: 일반적인 나누기 값 반환. ex) 5/2 = 2.5
//
: 몫 반환. ex) 5/2 = 2
%
: 나머지 반환. ex) 5/2 = 1
**
: 거듭 제곱
# 더하기
print( 3 + 2 ) # 5 출력.
# 빼기
print( 3 - 1 ) # 2 출력.
# 곱하기
print( 3 * 2 ) # 6 출력.
print( 3 ** 2) # 9 출력.
# 나누기
print( 7 / 2 ) # 3.5 출력.
print( 7 // 2 ) # 3 출력
print( 7 % 2 ) # 1 출력
내장함수란, 자주 사용하는 기능을 미리 만들어 놓은 것이다.
divmod는 몫과 나머지를 동시에 구해주는 내장 함수이다.
print(divmod(3, 2)) # (1, 1) 출력
print(divmod(7, 4)) # (1, 3) 출력
print(divmod(13, 2)) # (6, 1) 출력
print(divmod(19, 4)) # (4, 3) 출력
print(divmod(15, 5)) # (3, 0) 출력
print(7//4, 7%4) # 1 3 출력
print(7//4, ",", 7%4) # 1 , 3 출력
수학에서 사용되는 괄호와 동일한 기능으로 괄호 안에 있는 것을 먼저 계산한다.
※사칙연산 순서 : 괄호 → 곱셈, 나눗셈 → 덧셈, 뺄셈.
3 + 2 * 4 # 11 출력
( 3 + 2 ) * 4 # 20 출력
변수란, 하나의 값을 저장할 수 있는 공간이다.
# 하나의 값을 변수에 넣을 때 : 변수이름 = 값
num = 1
print(num)
# 두 개의 값을 변수에 넣을 때 : 변수이름1, 변수이름2 = 값1, 값2
num_1, num_2 = 1, 2
print(num_1)
print(num_2)
print(num_1, num_2)
변수를 사용하게 되면 이전에 계산된 결과에 새로운 값을 누적해서 계산하고 저장할 수 있다.
sum = 1 + 2
sum = sum + 3
sum = sum + 4
sum = sum + 5
print(sum) # 15 출력.
또한, 변수에는 어떤 값도 넣지 않고 선언할 수 있는 방법이 있는데 그 방법은 아래와 같다.
nothing = None
할당이란, 변수에 값을 넣는 것을 말한다.
할당 연산자는 '='이며 이외 다른 연산자(+, -, , /, //, %)는 산술 연산자라고 한다. 산술 후 바로 연산에 할당하는 연산자도 있다. (+=, -=, =, /=)
sum1 = 1
sum1 += 2
sum1 += 3
sum1 += 4
sum1 += 5
print(sum1)
위 예시는 아까 변수에서 봤던 예시와 동일한 결과를 얻을 수 있지만 표기가 더욱 간편화 됐다.
변수 이름을 작성하는데 두 가지 스타일이 있다.
스네이크 케이스 (snake case)
: 언더바(_)를 단어 사이에 추가하는 방법이다.
ex) snake_case
카멜 케이스 (camel case)
: 다음 단어는 대문자로 적는 방법이다.
ex) CamelCase
변수명을 적어 출력하는 f-string 방법이 있다.
변수 출력 방법은 아래와 같다.
print(f'{변수} ~~')
me = "민정"
print(f'{me}(이)만 빼고 고양이 다 있어 ')
# '민정만 빼고 고양이 다 있어'로 출력.
변수의 값이 숫자나 문자열일 경우
: 정수는 %d로 받고 뒤에 % (변수명)을 적어준다. (실수는 %f)
문자열은 %s로 받고 뒤에 % (변수명)을 적어준다. (문자는 %c)
변수가 여러개일 경우는 아래와 같다.
문자열 포멧 경우 %(해당 문자)%(기호)로 적어준다.
1) 문자열, 정수
name = "HongGilDong"
age = 20
sentence1 = "He is %s and he is %d years old." % (name, age)
print(sentence1)
2) 실수, 기호
rank = 40
total = 250
sentence2 = "그의 점수는 상위 %f%%입니다." % (rank/total*100)
print(sentence2)
3) print문으로 한번에 적을 경우
print("이번주에 비 올 확률은 %f 입니다." %"73.14")
[출력]
1) He is HongGilDong and he is 20 years old.
2) 그의 점수는 상위 16.000000%입니다.
3) 이번주에 비 올 확률은 73.14 입니다.
이건 C언어 스타일과 비슷하다.
위에서 배운 내용을 토대로 무인 붕어빵 주문 기계를 만들었다.
# 무인 주문 기계 만들기.
# 붕어빵(팥) : 2000원, 붕어빵 (슈크림) : 2500원, 붕어빵 (잡채) : 3000원
# 붕어빵 변수 설정.
fish_bread_bean = 2000
fish_bread_cream = 2500
fish_bread_noodle = 3000
fb1, fb2, fb3 = "붕어빵(팥)", "붕어빵(슈크림)", "붕어빵(잡채)"
# 주문 계산.
order__2, order__3 = 2, 3
order__2__pay, order__3__pay = fish_bread_cream * order__2, fish_bread_noodle * order__3
total = order__2 + order__3
total__pay = order__2__pay + order__3__pay
# 붕어빵 값 계산 출력.
print(f'주문이 완료되었습니다. {fb2} {order__2}개, {fb3} {order__3}개 총 {total}개 결제 금액은 {total__pay}원 입니다.')
아직 입력 값을 사용자에게 받는 것은 배우지 않았기 때문에 직접 입력값을 넣어 마지막에 붕어빵 값 계산을 출력하는 것까지만 진행했다.
출력화면은 아래와 같다.
주문이 완료되었습니다. 붕어빵(슈크림) 2개, 붕어빵(잡채) 3개 총 5개 결제 금액은 14000원 입니다.
Python에서 사용되는 자료형에는 아래와 같이 여러 종류가 있다.
코드를 작성하면서 자료형이 헷갈리다면 type()을 사용하여 자료형을 확인할 수 있다.
이름 = "김오즈"
나이 = 30
키 = 180.3
소속 = "s매직 서울북부"
print(type(이름)) # <class 'str'>
print(type(나이)) # <class 'int'>
print(type(키)) # <class 'float'>
print(type(소속)) # <class 'str'>
각각의 자료형의 기능들을 확인하려면 dir()을 사용하여 확인할 수 있다.
int(정수)형에서 float(실수)형으로 변환하는 방법.
: ex) 5 → 5.0 / float(5)
float(실수)형에서 int(정수)형으로 변환하는 방법.
: ex) 5.0 → 5 / int(5.0)
나이 = 10
type(나이) # int 출력
print(dir(나이))
# int형에 대해서는 'as_integer_ratio', 'bit_count', 'bit_length',
'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator',
'real', 'to_bytes' 등의 기능을 사용할 수 있다.
bit_length()
: bit 단위의 길이 나타내는 함수이다.
print(나이.bit_length()) # 4 출력.
bin()
: bit 단위로 변환하여 출력하게 해준다.
print(bin(나이)) # 0b1010 출력.
str형은 문자형으로 시퀀스 자료형이다. 시퀀스란? 요소들이 연속적으로 이어진 자료형으로 값 하나하나 요소가 된다.
각 요소마다 인덱스 번호가 생기는데 인덱스 번호는 0부터 시작한다. 해당 변수에 특정 요소가 있는지 확인하는 방법은 in을 사용하면 된다.
소속 = "s매직 서울북부"
print(소속)
print(소속[0])
print(소속[1])
print(소속[2])
print(소속[3])
print(소속[4])
print(소속[5])
print(소속[6])
print(소속[7])
[출력]
s매직 서울북부
s
매
직
서
울
북
부
"매" in 소속 # ture 출력
"3" in 소속 # false 출력
문자열(시퀀스)끼리는 연산도 가능하다.
# 더하기 연산
"13" + "금요일" # str + str → 하나의 문자열로 출력
[출력]
'13금요일'
# 곱하기 연산
옛날게임 = "바니바니 바니바니 당근당근 " * 20
print(옛날게임)
len(옛날게임) # 15 * 20 = 300
[출력]
바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근 바니바니 바니바니 당근당근
300
슬라이딩의 기본 형태는 print(변수[인덱스 시작 값:인덱스 끝 값])이다. 단, 인덱스 끝 값은 넣고 싶은 자리 수에 +1 하여 넣어야 한다.
ex1)
퀴즈 = "차 4대가 고장나면? 카포에라"
print(퀴즈[12:16])
print(퀴즈[15:16])
퀴즈[15] # 위에 출력과 동일한 값 출력.
퀴즈[-1] # 위에 출력과 동일. 맨 끝 값 출력시 -1 입력.
[출력]
카포에라
라
'라'
ex2)
생년월일 = "2000.12.25"
# 2000 12 25 출력해보기.
print(생년월일[0:4], 생년월일[5:7], 생년월일[8:10])
# 다른 방법.
년 = 생년월일[0:4]
월 = 생년월일[5:7]
일 = 생년월일[8:11]
print(f'{년} {월} {일}') # 강의 답
ex3)
숫자 = "12383843848939"
# 전체 출력
print(숫자[::])
# 거꾸로 출력
print(숫자[::-1]) # 93984834838321 출력
# 첫번째 인덱스 기준으로 2칸씩 띄어쓰기 출력하기
print(숫자[::2]) # 1334883 출력
# 이 외
print(숫자[4:1]) #출력 안됨.
print(숫자[5:1:-1]) # 인덱스 시작과 끝이 반대여도 거꾸로 출력됨. 8383 출력
ex4)
퀴즈 = "스님이 공중에 뜬다를 4글자로 말하면? 어중이떠중이"
# 뒤에 정답만 출력하기.
print(퀴즈[-6:]) # 내 답
print(퀴즈[22:28]) # 강의 답
과일 = "apple"
과일.count("p") # 2 출력
과일[1] # p로 출력.
과일.index("p") # 1로 출력.
라라랜드 = "사람들은 다른 사람들의 열정에 끌리게 되어있어 자신이 잊은 걸 상기시켜 주니깐"
print(라라랜드[0:4])
"열정" in 라라랜드
print(라라랜드[-8:])
라라랜드.count("사") + 라라랜드.count("은")
# 문자갯수 각각 구해서 연산도 가능하다.
라라랜드.index("잊은")
# 여러 글자를 넣었을 때 "잊"의 위치 알려준다.
[출력]
사람들은
True
상기시켜 주니깐
4
30
boolean 형은 True와 False로 값이 반환된다.
여기서 주의할 점은 True와 true, False와 false이다.
두개는 같은 것이 아니다!!
bool("힘들어요 여러분") # True 출력.
3 > 1 # True 출력
3 == 1 # False 출력
20 != 5 # True 출력 / ! : 부정
20 != 20 # False 출력
5 >= 5 # True 출력
문자열도 대소구분이 되기 때문에 비교가 가능하다.
"python" == "Python" # 대소문자 구분 되므로 False 출력
"python" != "Python" # True 출력
그렇다면 ==와 is는 같은 뜻일까?
아니다. is는 주소값을 비교하고 ==는 요소의 값을 비교하기 때문에 같은 것이 아니다.
3 is 3 # True 출력.
3 == 3 # True 출력.
3.0 is 3 # False 출력. 둘의 자료형이 달라서 주소 값이 다르게 저장.
3.0 == 3 # True 출력.
print(id(3.0)) # 3.0의 주소 값 출력.
print(id(3)) # 3의 주소 값 출력.
True가 1이고 False가 0이다.
True and True # True 출력 1 * 1 = 1
True and False # False 출력 1 * 0 = 0
False and True # False 출력 0 * 1 = 0
False and False # False 출력 0 * 0 = 0
True or True # True 출력 1 + 1 = 1 (이해를 돕기 위함)
True or False # True 출력 1 + 0 = 1
False or True # True 출력 0 + 1 = 1
False or False # False 출력 0 + 0 = 0
이해를 돕기 위해 and는 *로 or은 +로 생각하면 된다.
반대의 의미인 not도 논리연산자이다.
not True # False 출력.
ex1)
10 == 12 or 6 != 2
2 > 5 and 7 == 7
not 14 <= 15
not 7 is 7.0
[출력]
True
False
False
True
ex2)
print(False and True)
print(False and "힘들어요")
print(True and False)
print(True and "힘들어요")
print(True or "힘들어요")
[출력]
False
False
False
힘들어요
True
False and 로 시작하면 무조건 False이기 때문에 뒤에 해석을 생략한다. True and 는 뒤에 있는 값을 출력한다.
True or 로 시작하면 무조건 True이기 때문에 뒤에 해석 생략한다.

키 : 180cm , 몸무게 92kg
m = 180 * 0.01
kg = 92
BMI = kg / (m ** 2)
print(f'신체질량지수(BMI) 키 : {m}cm, 몸무게 : {kg}kg, BMI : {BMI}')
[출력]
신체질량지수(BMI) 키 : 1.8cm, 몸무게 : 92kg, BMI : 28.39506172839506
밑변 : 9cm, 높이 : 13cm
b = 9
a = 13
c = ((a**2) + (b**2))**0.5
print(f'피타고라스 정의 - 밑변 : {b}cm, 높이 : {a}cm → 빗면 : {c}cm')
[출력]
피타고라스 정의 - 밑변 : 9cm, 높이 : 13cm → 빗면 : 15.811388300841896cm
쉬지도 않고 일하는 직장인 오즈씨는 3년만에 첫 성과급으로 2500만원을 받았습니다. 연이율 6.15%의 고정금리 상품에 예금하려고 합니다. 3년 동안 넣어두면 원금을 제외한 이자가 얼마나 되는지 계산해 주세요. (이자 지급 방식은 매년 원금 기준으로 지급되는 단리 방식)
money = 25000000
add = 6.15
n = 3
plus = money * (1+ (add*0.01)*n)
pure = plus - money
print(f'이자 : {pure}원 ')
[출력]
이자 : 4612500.000000004원