[오늘의 일지]
파이썬 온라인 실시간 강의 - 반복문부터 클래스까지의 내용
[상세 내용]
파이썬 기본 내용 및 실습
반복문
- try, except(오류처리 혹은 예외처리) : try, except 구문은 오류 발생가능성이 있는 구문을 처리하거나 반드시 오류가 발생하는 구문을 감싸 정상적인 프로그램 흐름이 이어질 수 있도록 처리하는 예외처리 구문입니다.
# try, except 형식
try:
처리하고 싶은 코드
except 오류명:
try로 처리하지 못한 작업을 처리하기 위한 코드
- try, except를 이용한 연습문제 : 간단한 ATM기 시스템
# try, except 사용 예시
# 간단한 ATM기 시스템을 만들어보겠습니다.
# 사용자로부터 메뉴를 입력받습니다.
# 입금
# 출금
# 잔액확인
# 종료
# 입력받은 메뉴에 따라 계좌잔액에 입금과 출금을 적용하고 잔액을 출력해봅시다.
# 종료메뉴는 while 문을 빠져나오도록 프로그램을 종료시킵니다.
account = 0
while True:
msg = '''
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
'''
print(msg)
menu = input('원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : ')
if menu == '1':
try:
Deposit = int(input('입금하실 금액을 적어주세요. : '))
account += Deposit
print(f'귀하의 현재 잔액은 {account}입니다.')
except ValueError:
print('서비스 입력이 잘못 되었습니다. 금액만 입력해주세요. 시작 메뉴로 돌아갑니다.')
pass
elif menu == '2':
try:
Withdrawal = int(input('출금하실 금액을 적어주세요. : '))
if account >= Withdrawal:
account -= Withdrawal
print(f'귀하의 현재 잔액은 {account}입니다.')
else:
print('잔액이 부족합니다.')
except ValueError:
print('서비스 입력이 잘못 되었습니다. 금액만 입력해주세요. 시작 메뉴로 돌아갑니다.')
pass
elif menu == '3':
try:
print(f'귀하의 현재 잔액은 {account}입니다.')
except ValueError:
print('서비스 입력이 잘못 되었습니다. 금액만 입력해주세요. 시작 메뉴로 돌아갑니다.')
pass
elif menu == '4':
print('이용해 주셔서 감사합니다.')
break
else: # 위에서 설정한 조건 1, 2, 3, 4 숫자형태로 전달받지 않은 모든 경우
pass
print('서비스 입력이 잘못 되었습니다. 실행 번호만 입력해주세요'
- try, except를 이용한 연습문제 결과 : 문자를 입력했을 때 발생하는 오류도 수정하였습니다.
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : aaa
서비스 입력이 잘못 되었습니다. 실행 번호만 입력해주세요
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : 1
입금하실 금액을 적어주세요. : aaa
서비스 입력이 잘못 되었습니다. 금액만 입력해주세요. 시작 메뉴로 돌아갑니다.
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : 1
입금하실 금액을 적어주세요. : 1000
귀하의 현재 잔액은 1000입니다.
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : 2
출금하실 금액을 적어주세요. : 500
귀하의 현재 잔액은 500입니다.
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : 3
귀하의 현재 잔액은 500입니다.
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
원하시는 서비스 메뉴를 실행 번호로 입력 해주세요. : 4
이용해 주셔서 감사합니다.
- 함수와 클래스
- 함수
- 수학적 정의의 함수 : 𝑦 = 𝑓(𝑥)
- 프로그래밍에서의 함수 : 자주 사용해야 하는 코드를 재사용하기 위한 코드의 묶음을 의미한다고 할 수 있습니다.
- 데이터과학에서의 함수 : 입력값을 받아 사용자가 원하는 처리를 한 후 결괏값을 되돌려 받는 코드의 묶음을 의미한다.
-함수의 구조
def 함수이름(파라메터 혹은 매개변수): # 함수이름을 메모리에 저장, 파라메터는 없어도 가능
실행코드 # 함수이름을 호출하면 실행코드가 위에서 아래로 실행
실행코드 # 보통 기능단위로 코드로 묶어 함수화 한다.
실행코드 # 실제로는 코드가 메모리에 저장되는 구조를 갖는다.
return 반환값 # 함수에서 실행코드를 거친 결과값을 다시 사용해야 할 경우 값을 반환시킨다.
# 파라메터 혹은 매개변수 : 함수의 입력값, 혹은 함수의 작동에 영향을 줄 수 있는 값(변수)
# 파라메터는 없어도 되지만 세미콜론은 반드시 찍어준다.
# 함수 정의하기
def person():#person이라는 이름값을 앞으로는 내가 정의하는 기능명으로 사용하겠다.
print('제 이름은 Lee입니다.')
# 함수호출 테스트
person()
>>>
제 이름은 LEE입니다.
- 입력값(파라미터 혹은 매개변수)을 받는 함수 예시
# 파라메터가 있는 함수 정의
def person_name(x):
print(f'제 이름은 {x}입니다.')
# 함수 호출 시 실행 될 구문
person_name('Lee')
>>>
제 이름은 lee입니다.
- 함수 안에서 정의된 변수
def person_name(x):
add = '지역'
age = 30
print(f'제 이름은 {x}입니다.')
# 함수 내부에서 정의 된 age 변수는 함수 내부에서만 정의되는 변수로서 함수 밖에서는 호출할 수 없다.
# 그렇기에 다른 함수에서 같은 이름의 변수를 사용해도 관계없음
# 함수 연산 결과로서 결과값을 빼기 위해서는 반드시 **return**구문으로 반환값을 사용해줘야 함
# 함수도 기본컴퓨터의 작동프로세스와 같이 입력, 처리, 출력의 처리를 하기위한 구조를 가짐
- 숫자 개수를 입력받고 그 숫자를 리스트에 저장하고 리스트의 총합을 출력하는 함수 예시
# 예시
def exam(x):
total = []
for i in range(x):
num = int(input('합을 계산 할 숫자를 입력하세요 : '))
total.append(num)
return sum(total)
# 함수호출
exam(5)
>>>
합을 계산 할 숫자를 입력하세요 : 4
합을 계산 할 숫자를 입력하세요 : 3
합을 계산 할 숫자를 입력하세요 : 2
합을 계산 할 숫자를 입력하세요 : 1
합을 계산 할 숫자를 입력하세요 : 2
12
- 반환을 사용하는 함수
# 함수 내부에서 정의 된 변수를 사용하기 위해서는 값을 반환(return) 시켜야 한다.
# x와 y의 합을 반환시킴
def bmi(x, y):
bmi =x/(y/100)**2
if 30 <= bmi :
print('비만입니다.')
elif 24 <= bmi < 30 :
print('과체중입니다.')
elif 20 <= bmi < 24 :
print('표준체중입니다.')
else :
print('저체중입니다.')
return bmi
# 함수 호출
bmi(80,175)
>>>
과체중입니다.
26.122448979591837
- 지금까지 알게 모르게 사용했던 함수들
print()
int()
str()
float()
input()
list()
dict()
range()
list.append()
- 심플한 계산기 만들기
# 덧셈
def cal_sum(x, y):
z = x + y
return z
# 뺄셈
def cal_minus(x, y):
z = x - y
return z
# 곱셈
def cal_multy(x, y):
z = x * y
return z
# 나눗셈
def cal_division(x, y):
z = x / y
return z
- 파이썬 예약어로 지정된 함수 쪼개보기
# sum() 함수는 python 언어에 내장되어 있는 함수입니다.
# 파라메터로 iterable 변수 즉, 반복문으로 내부 인자의 루프를 돌 수 있는 변수를 받습니다.
# max() 함수도 python 내장 함수로서 sum()과 같은 형식의 입력값을 받아 최대값을 반환하는 함수입니다.
test_list = [1, 2, 3, 4, 5]
sum(test_list)
>>>
15
# sum_sum을 함수 이름으로 갖는 python sum() 함수를 재현해보기
def sum_sum(x):
total = 0
for i in x:
total += i
return total
sum_sum(test_list)
>>>
15
- max() 함수 쪼개보기
# max_max를 함수 이름으로 갖는 python max() 함수를 재현해보기
def max_max(x):
x.sort()
return x[-1]
>>>
5
# 다양한 방식이 있다
def max_max(x):
max_num = -99999999999999
for i in x:
if max_num < i:
max_num = i
return max_num
max_max(test_list)
>>>
5
- 클래스 : 같은 목적 혹은 대상을 위해 만들어진 함수들의 묶음
클래스의 선언은 함수와 달리 소괄호 없이 선언한다.
클래스명은 단어의 첫 알파벳을 대문자로 ex) MyClass, SumTotal
클래스 선언 이후 처음 작성하는 __init__ 함수는
클래스가 정의되면서 입력되는 파라미터를 저장하고 재사용하기 위한 초기화함수
클래스 내 함수의 파라미터 맨 앞은 항상 **self**를 추가해주어야 하며,
__init__ 함수에서 설정한 변수 할당 시에도 self를 추가해 준다.
self. 변수는 클래스 내부에서 사용되며 클래스 내부에 있는 모든 함수에 사용이 가능하다.
- 클래스의 구조
class 클래스명: # 클래스 이름을 선언(저장), 앞으로 해당 이름은 클래스로 지정함
def __init__(self, x): # 클래스 내부에 속한 함수임을 표현하기 위해 self 키워드를 파라메터에 추가
# 클래스를 만들면서 입력받는 파라메터를 클래스 내에서 사용가능 하도록 초기화
self.x = x
# 변수 x는 클래스가 만들어지며 전달받는 파라메터
# self.x는 파라메터를 전달받아 클래스 내부에서 사용가능한 형태로 초기화한 변수
def 함수명(self, 파라메터): # 클래스 내부에 속한 함수임을 표현하기 위해 self 키워드를 파라메터에 추가
실행코드
실행코드
실행코드
return 반환값
- 계산기 클래스
# 클래스의 형태를 눈으로 익혀봅시다.
class Calculator: # 클래스 선언
def __init__(self, x, y): # 초기화함수
self.x = x # 클래스 내 변수 초기화
self.y = y
def my_sum(self): # 함수 정의
z = self.x + self.y
return z
def my_minus(self):
z = self.x - self.y
return z
def my_multiply(self):
z = self.x * self.y
return z
def my_division(self):
z = self.x / self.y
return z
# 클래스의 호출
Calculator
>>>
__main__.Calculator
- 패키지(packages), 모듈(modules)
random 은 파이썬 내장 패키지(모듈)입니다.
랜덤한 값을 생성하거나 뽑아오는데 사용합니다.
random 모듈 불러오기 import random
random 모듈의 자주 사용하는 함수
random .random() : 0 ~ 1 사이의 실수를 하나 반환
random .randint(a, b) : a ~ b 사이의 정수를 하나 반환
random .choice(list 혹은 데이터집합) : list의 무작위 샘플하나를 반환
random .sample(list 혹은 데이터집합, N(샘플링 할 데이터의 갯수)) : list의 무작위 샘플 N개를 반환
random .suffle(list 혹은 데이터집합) : list 순서 섞기
- random 패키지 예시
# random 모듈 불러오기
import random
# 0 ~ 1 사이의 실수를 하나 반환
random.random()
>>>
0.05399278623109127
# a ~ b 사이의 정수를 하나 반환
random.randint(0, 10)
>>>
3
test_list = [13, 2, 3, 45, 6, 21, 39]
# list의 무작위 샘플하나를 반환
random.choice(test_list)
>>>
2
# list의 무작위 샘플 N개를 반환
random.sample(test_list, 3)
>>>
[21, 2, 13]
# list 순서 섞기
random.shuffle(test_list)
test_list
>>>
[39, 13, 21, 45, 2, 6, 3]
- 로또 번호 생성기 만들어 보기
# 심플하게 만들기
lotto_list = [i for i in range(1,46)]
for i in range(5):
print(random.sample(lotto_list, 6))
>>>
[24, 4, 40, 2, 26, 33]
[39, 24, 13, 11, 19, 7]
[26, 24, 32, 23, 44, 30]
[42, 29, 39, 41, 45, 23]
[25, 31, 27, 29, 14, 6]
- 최종 버전 스무고개 게임
- 컴퓨터와 스무고개 게임을 하는 프로그램을 만들어보겠습니다.
- random 모듈로 컴퓨터가 1 ~ 100 중 숫자를 하나 선택하게 합니다.
- 게이머에게 입력받은 숫자를 판별하여 업, 다운, 정답을 출력하는 프로그램입니다.
- 게임 횟수는 10회이며, 10회 동안 정답을 못 맞출 경우 실패 문구를 출력하도록 프로그램을 짜 보겠습니다.
- 선택) 사용자에게 최소숫자, 최대숫자를 입력받아 random으로 생성
import random
def game_20(x,y):
com = random.randint(x, y)
for i in range(10):
num = int(input('숫자를 입려하세요 : '))
if num > com:
print('다운')
elif num < com :
print('업')
else :
print('정답입니다.')
break
if i == 9:
print('실패입니다.')
# 함수 호출
game_20(1,100)
>>>
숫자를 입려하세요 : 20
다운
숫자를 입려하세요 : 10
업
숫자를 입려하세요 : 15
업
숫자를 입려하세요 : 16
업
숫자를 입려하세요 : 17
업
숫자를 입려하세요 : 18
정답입니다.
- 이번 강의 마지막 연습문제 : ATM 시스템 클래스화(실패:메뉴 이용 시 계좌금액이 저장이 안 되고 초기화되는 상황)
class ATM:
def __init__(self):
self.account = 0
# menu
def menu(self):
while True:
msg = '''
-------------------------------------------------------------
안녕하세 AI 은행입니다. 원하시는 서비스 메뉴를 입력 해주세요.
1. 입금
2. 출금
3. 잔액확인
4. 종료
-------------------------------------------------------------
'''
print(msg)
menu = input('원하시는 서비스 메뉴를 숫자로 입력 해주세요. : ')
if menu == '1':
ATM().deposit()
elif menu == '2':
ATM().withdrawal()
elif menu == '3':
ATM().Balance()
elif menu == '4':
print('이용해 주셔서 감사합니다.')
break
else :
pass
print('서비스 입력이 잘못 되었습니다. 숫자만 입력해주세요')
# 입금
def deposit(self):
try:
num = int(input('입금하실 금액을 적어주세요. : '))
self.account += num
return print(f'귀하의 현재 잔액은 {self.account}입니다.')
except ValueError:
print('서비스 입력이 잘못 되었습니다. 금액만 입력해주세요. 시작 메뉴로 돌아갑니다.')
pass
# 출금
def withdrawal(self):
try:
num = int(input('출금하실 금액을 적어주세요. : '))
if self.account >= num:
self.account -= num
return print(f'귀하의 현재 잔액은 {self.account}입니다.')
else:
print('잔액이 부족합니다.')
except ValueError:
print('서비스 입력이 잘못 되었습니다. 금액만 입력해주세요. 시작 메뉴로 돌아갑니다.')
pass
# 잔액확인
def Balance(self):
return print(f"현재 잔액은 {self.account}입니다.")
[마무리]
2일에 걸친 파이썬 기초 실시간 강의가 마무리되었습니다. 녹화 강의를 포함해서 3번 정도의 반복으로 파이썬의 기초에 대한 수업이 이루어졌는데 그래도 어느 정도 함수까지는 이해하는데 큰 어려움은 없었던 거 같습니다. 특히 for문이나 while문은 연습문제를 풀면서 더 이해가 잘 되었던 거 같습니다. 다만 마지막 부분에 나왔던 클래스 파트는 아직도 뭐가 뭔지 이해가 잘 안 되는 느낌을 받았습니다. 아직 남아있는 수업을 통해서 클래스 파트에 대한 이해할 수 있게 더 노력해 봐야 할 거 같습니다.
'프로그래밍 > Python' 카테고리의 다른 글
[AI 부트캠프] DAY 13 - 파이썬 7 (0) | 2023.08.03 |
---|---|
[AI 부트캠프] DAY 12 - 파이썬 6 (0) | 2023.08.02 |
[정보] 파이썬 코딩 연습하기 좋은 사이트 5가지 추천 (0) | 2023.07.30 |
[AI 부트캠프] DAY 10 - 파이썬 4 (0) | 2023.07.29 |
[AI 부트캠프] DAY 9 - 파이썬 3 (0) | 2023.07.28 |
댓글