4/04 수업 정리 (python)
파이썬 개요
Python은 1991년 프로그래머인 “귀도 반 로섬”이 발표한 고급 프로그래밍 언어이다.
귀도가 좋아하는 코미디 “Monty Phthon’s Flying Circus”에서 유래된 명칭이다.
파이썬도 예전에 내 블로그에 포스팅 한 것이 있다.
파이썬의 주요 특징
플랫폼 독립적 - 플랫폼의 의존적이란 말은 예를 들어 리눅스의 실행파일(elf)는 윈도우에서 실행되지 않음 반대로 윈도우의 실행파일(exe)는 리눅스에서 실행되지 않음 → 플랫폼에 의존적이다.
인터프리터(Interpreter) 언어 - 정확히는 인터프리터 언어가 아님, 정확히는 JIT(just in time)언어이다.
객체 지향적 언어
동적 타이핑 지원 - 변수를 지정할 때 해당 변수의 데이터 타입을 명시하지 않아도 컴퓨터가 알아서 해석하도록 함
티오베 인덱스에서 보면 알 수 있듯이, 현재 파이썬이 가장 인기있는 프로그래밍 언어이다.
python의 종류
Cpython - C로 작성된 Python, 기본적으로 python이라고 하면 Cpython을 의미
Jython - 자바로 구현된 python
Pypy - python으로 구현된 python; Cpython보다 빠르게 수행되는 것이 목표
python으로 가능한 일
시스템 유틸리티 제작, GUI 프로그래밍, 타 언어와의 결합, 웹 프로그래밍, 데이터 베이스 프로그래밍 등등
python 동향
파이썬 웹프레임워크, 장고를 기반으로 한 시큐어 코딩이 새로 나옴 그 이전에는 자바와 C 밖에 없었다.
python 설치(윈도우 기준)
https://www.python.org/downloads/
path 체크해주고 설치
설치 완료 후 cmd를 켜고 ‘python --version’을 쳐서 설치 완료되었는지 확인
파이참 설치(윈도우 기준)
파이참은 JetBrains 사에서 제작한 Python용 IDE 이다.
코드 자동 완성 기능을 제공하고 개발자가 자체 플러그인을 작성하여
PyCharm 기능을 확장 할 수 있도록 API를 제공한다.
https://www.jetbrains.com/ko-kr/pycharm/download/#section=windows
Community 버전(무료) 다운로드
pycharm 한글 설정
파이썬 기초 문법
변수(Variable) : 이름 그대로 변할 수 있는 공간을 말함.
Python의 변수는 형태를 미리 선언해야 하는 다른 언어에 비해 간결하다. C언어 같은 전통언어에서는 변수의 형태를 지정하고 엄격한 관리가 필요하다.
상수(Constants) : 변수처럼 값을 저장해두지만, 변하지 않는 값을 저장
Python은 상수의 기본 문법은 별도로 없으며, 모듈 등을 이용해 구현이 가능함.
파이썬에는 문법을 사용할 때 지켜야 할 것들이 명시되어있는 PEP가 있음
산술 연산자 실습 코드
num1 = 5
num2 = 2
add = num1 + num2 # 덧셈 : Addition
sub = num1 - num2 # 뺄셈 : Subtraction
mul = num1 * num2 # 곱셈 : Multiplication
exp = num1 ** num2 # 거듭제곱 : Exponentiation
div = num1 / num2 # 나눗셈 : Division
quot = num1 // num2 # 몫 : Quotient
rem = num1 % num2 # 나머지 : Remainder
print(add) # 7
print(sub) # 3
print(mul) # 10
print(exp) # 25
print(div) # 2.5
print(quot) # 2
print(rem) # 1
관계(비교) 연산자 실습 코드
a = 42
b = 72
print(a == b) # False
print(a != b) # True
print(a > b) # False
print(a < b) # True
print(a >= b) # False
print(a <= b) # True
논리 연산자 실습 코드
a = 1
b = 0
print(a and b) # 0
print(a or b) # 1
print(not a) # False
print(not b) # True
비트 연산자(Bitwise Operators) 실습 코드
비트 연산자는 이진수 단위로 연산을 하기 때문에 진수 변환법을 숙지하고 활용해야 함
a = 5, b = 2 일때,
a = 5
b = 2
print(a & b) # AND : 0
print(a | b) # OR : 7
print(a ^ b) # XOR : 7
print(~a) # NOT : -6
print(a << b) # 왼쪽 시프트 : 20
print(a >> b) # 오른쪽 시프트 : 1
멤버 연산자 실습 코드
Member = [1, 2, 3, 4, 5]
print(Member)
print('2 있음' if 2 in Member else '2 없음') # 2 있음
print('6 없음' if 6 not in Member else '6 있음') # 6 없음
변수 표기법
카멜 표기법(Camel Case) : ex) camelVariable
파스칼 표기법(Pascal Case) : ex) PascalVariable
헝가리안 표기법(Hungarian Notation : ex) strName, bBusy
스네이크 표기법(Snake Case) : ex) first_Name
주석
블록단위 주석 : 작은 따옴표(’) 또는 큰 따옴표 (”)를 연달아 3개를 사용
행 단위 주석 : 우물정자(#)를 사용
들여쓰기(indent)
들여쓰기를 기준으로 코드 블록을 구성
같은 블록 내에서는 들여쓰기 칸 수가 같아야 함 → 위반시 “IndentationError: unexpected indent” 출력
들여쓰기 단축키 Tab, 반대는 Shift + Tab
행 결합 실습
세미콜론(;)으로 구분 (자주 쓰이지도 않고 세미콜론으로 행을 결합하는 행위는 파이썬에서 권장되지 않음)
# 행 한줄로 결합
a = 1; b = 2; c = 3
print(a); print(b); print(c)
파이썬 입출력
split 함수로 나눌 때, 윈도우에서는 \r\n 으로 구분 리눅스는 \n으로 나눠짐
그래서 \n으로 기준을 나눌 때 윈도우에서는 \r이 남음
포맷팅 실습 코드
Year = 2022
Name = "모히또"
Age = 29
print("이번 년도는 {}년 입니다.".format(Year)) # 이번 년도는 2022년 입니다.
print("제 이름은 {} 입니다.".format(Name)) # 제 이름은 모히또 입니다.
print("이름 : {} / 나이 : {}".format(Name, Age)) # 이름 : 모히또 / 나이 : 29
print("이름 : {1} / 나이 : {0}".format(Age, Name)) # 이름 : 모히또 / 나이 : 29
f-string 포맷팅 실습 코드
Name = "모히또"
Age = 29
Gender = '남성'
print(f"이름 : {Name} / 나이 : {Age} / 성별 : {Gender}") # 이름 : 모히또 / 나이 : 29 / 성별 : 남성
print(f"""
이름 : {Name}
나이 : {Age}
성별 : {Gender}
""")
# 이름 : 모히또
# 나이 : 29
# 성별 : 남성
입력 input 함수 실습 코드
Name = input("이름을 입력하세요 : ") # Mojito
print(f"당신의 이름은 '{Name}'입니다.") # 당신의 이름은 'Mojito'입니다.
정수 입력 실습 코드
Num1 = int(input("첫 번째 숫자 입력 : ")) # 1
Num2 = int(input("두 번째 숫자 입력 : ")) # 3
Result = Num1 + Num2 # 1 + 3
print(Result) # 4
파일 객체 생성 실습 코드
f = open("text.txt", "w")
data = "파일 입출력 실습"
f.write(data)
f.close()
write 함수 사용 실습 코드
f = open("text.txt", "w")
for i in range(1, 10):
data = f"line {i}\n"
f.write(data)
f.close()
read 함수 사용 실습 코드
f = open("text.txt", "r")
print(f.read())
f.close()
결과:
line 1
line 2
line 3
line 4
line 5
line 6
line 7
line 8
line 9
readline 함수 사용 실습 코드 (첫 번째 Line 만 반환)
f = open("text.txt", "r")
print(f.readline())
f.close()
결과:
line 1
readlines 함수 사용 실습 코드
f = open("text.txt", "r")
print(f.readlines())
f.close()
결과:
['line 1\n', 'line 2\n', 'line 3\n', 'line 4\n', 'line 5\n', 'line 6\n', 'line 7\n', 'line 8\n', 'line 9\n']
with 블록 활용 실습 코드
(파일을 다룰 때 명시적으로 close 메소드를 호출하지 않고도 파일을 닫기 위해 사용)
with open("text.txt", "w") as f:
data = "with 블록 사용 실습"
f.write(data)
결과:
4월 4일(월) Python 과제
과제 : 복리 이자 계산
▶ 조건 1 : 적금 1년 만기, 연 4.3% 복리 이자 상품을 4년간 운용했을 때의 총액 계산
▶ 조건 2 : 현재까지 배운 것만을 토대로 계산할 것, 수학 공식을 찾아서 대입하면 됨
▶ 조건 3 : 적립하는 금액은 월 최소 50만원으로 각자 정해서 선정
▶ 조건 4 : 총액 계산 시 소수점 아래까지 모두 출력
우선 원금을 입력받아야 하기 때문에 조건 3부터 충족을 시켜야한다.
Money = int(input("원금을 입력해주십시오 : ")) # 원금 입력받기
while Money < 500000:
Money = int(input("금액을 다시 입력해 주세요 : "))
while 문을 사용해서 만약 적립할 금액이 50만원 보다 적다면 계속해서 입력받게 하기
복리의 계산을 수식으로 나타내면 다음과 같다.
원금 * ((1 + 이율) ^ 운용기간)
따라서 원금의 입력을 100만원이라고 했을 때, 파이썬으로는
1000000 * ((1 + 0.043) ** 4)로 나타낼 수 있다.
print(f"고객님의 복리 이자 계산은 {Money * ((1 + 0.043) ** 4)}원 입니다.")
결과:
만약 반올림해서 소수점 3번째 자리까지 나타내고 싶으면 ‘round’함수를 사용하면 된다.
print(f"고객님의 복리 이자 계산은 {round(Money * ((1 + 0.043) ** 4), 3)}원 입니다.")
결과:
여기까지가 첫 시도!
다시 생각해보니까 위의 계산식은 원금을 한번 입력하면 4년간 얼마가 오르는 지 계산한 것이었다.
그래서 만기가 1년 단위이고, 입력을 월 단위로 받아야하니 복리 계산 ‘월복리’계산으로 다시 해야할 것 같았다...
월복리 계산
월복리 수식:
적립액 × (1+연이자율/12) × {(1+연이자율/12)(적립연수×12)-1} / (연이자율ᅟ/12)
즉, 월 적립액이 50만원이고 1년 복리를 계산하면,
500000 * (1 + 0.043 / 12) * ((1 + 0.043 / 12) ** (1 * 12) - 1) / (0.043 / 12)가 된다.
전체 소스코드
for i in range(1, 5):
Money = int(input("월 적립금을 입력해주십시오 : ")) # 월 적립금 입력받기
while Money < 500000:
Money = int(input("금액을 다시 입력해 주세요 : "))
print(f"고객님의 {i}년차 복리 이자 계산은 {round(Money * (1+0.043/12) * ((1+0.043/12)**(i*12) - 1) / (0.043 / 12))}원 입니다.")
- 총 4년에 걸쳐서 계산이 되어야 하니까 for문의 범위를 1에서 5까지로 정해주고
- Money라는 변수로 월 적립금을 입력받는다
- 대신 while문을 통해 50만원보다 적립금이 적으면 계속해서 받게한다.
- 마지막으로 위의 수식을 통해 월 적립금을 통해 n년차 복리 이자 계산을 출력한다.
결과:
네이버 계산기
주의 할 점은 위의 수식은 ‘매월 초 적립하는 월복리 공식’이고 ‘매월 말 적립하는 월복리 공식’은 따로 사용을 해야한다.
마지막으로 조건2(현재까지 배운 것만을 토대로 계산할 것)을 토대로
우리가 배우지 않은 for문과 while문 그리고 round 함수를 뺀다면
다음과 같은 코드로 진행된다.
Money = int(input("월 적립금을 입력해주십시오(최소 50만원 이상) : ")) # 월 적립금 입력받기
print(f"고객님의 1년차 복리 이자 계산은 {Money * (1 + 0.043 / 12) * ((1 + 0.043 / 12) ** (1 * 12) - 1) / (0.043 / 12)}원 입니다.")
print(f"고객님의 2년차 복리 이자 계산은 {Money * (1 + 0.043 / 12) * ((1 + 0.043 / 12) ** (2 * 12) - 1) / (0.043 / 12)}원 입니다.")
print(f"고객님의 3년차 복리 이자 계산은 {Money * (1 + 0.043 / 12) * ((1 + 0.043 / 12) ** (3 * 12) - 1) / (0.043 / 12)}원 입니다.")
print(f"고객님의 4년차 복리 이자 계산은 {Money * (1 + 0.043 / 12) * ((1 + 0.043 / 12) ** (4 * 12) - 1) / (0.043 / 12)}원 입니다.")
결과:
네이버 계산기:
'Challenge > SK 뉴스쿨 정보보안과 3기' 카테고리의 다른 글
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.07) (0) | 2022.04.08 |
---|---|
SK 뉴스쿨 프로그래밍 기초 파이썬 (2022.04.05) (0) | 2022.04.08 |
SK 뉴스쿨 프로그래밍 기초 C언어 (2022.03.25 ~ 04.01) (0) | 2022.04.06 |
SK 뉴스쿨 네트워크 기초 & 인프라 기초 (2022.03.14 ~ 03.24) (0) | 2022.04.06 |
SK 뉴스쿨 시스템 기초 (2022.03.03 ~ 03.11) (0) | 2022.04.02 |