230412_제로베이스데이터스쿨_스터디노트_리뷰노트

김지태·2023년 4월 13일
0
post-thumbnail

05_051 모듈 6 공과금 구하기

###수입과 공과금 입력하면 공과금 총액과 수입 대비 공과금 비율을 계산하는 모듈 만들기

모듈파일 - utilityBill.py

income = 0 # 수입에 해당하는 변수 설정
waterPrice = 0 ; electricPrice = 0 ; gasPrice = 0 #각각 공과금에 대한 변수 설정

변수의 값을 설정하는 함수와 얻어오는 함수

def setIncome(ic): # 설정하는 함수 / 값을 받아서 인컴의 값을 세팅해준다 / 세터
global income
income = ic

def getIncome(): #외부에서 수입의 값을 가져온다 / 게터
return income

def setWaterPrice(wp):
global waterPrice
waterPrice = wp

def getWaterPrice():
return waterPrice

def setElectricPrice(ep):
global electricPrice
electricPrice = ep

def getElectricPrice():
return electricPrice

def setGasPrice(gp):
global gasPrice
gasPrice = gp

def getGasPrice():
return gasPrice

공과금의 총액을 얻어내는 함수

def getUtilityBill():
result = waterPrice + electricPrice + gasPrice
return result

def getUtilityBillRate():
result = getUtilityBillRate() / getIncome() * 100
return result

실행파일

import utilityBill as ub

inputIncome = int(input('수입 입력: '))
ub.setIncome(inputIncome)

inputWaterPrice = int(input('수도요금 입력: '))
ub.setWaterPrice(inputWaterPrice)

inputElectricPrice = int(input('전기요금 입력: '))
ub.setIncome(inputIncome)

inputGasPrice = int(input('가스요금 입력: '))
ub.setGasPrice(inputGasPrice)

print(f'공과금: {ub.getUtilityBill()}원')
print(f'수입 대비 공과금 비율: {ub.getUtilityBillRate()}%')

공과금: 140000원
수입 대비 공과금 비율: 4.67%

05_052 모듈 7 패키지 만들기

atithmetic 디렉토리 - basic_operation.py

def add(n1,n2):
return round(n1 + n2, 2)

def sub(n1,n2):
return round(n1 - n2, 2)

def mul(n1,n2):
return round(n1 * n2, 2)

def div(n1,n2):
return round(n1 / n2, 2)

atithmetic 디렉토리 - developer_operation.py

def mod(n1,n2): # 나머지
return round(n1 % n2, 2)

def flo(n1,n2):
return round(n1 // n2, 2)

def exp(n1, n2):
return round(n1 ** n2, 2)

shape 디렉토리 - circle_area.py

def calCircleArea(r):
return round(r * 2 3.14, 2)

shape 디렉토리 - triangle_square_area.py

def calTriangleArea(w, h):
return round(w * h / 2, 2)

def calSquareArea(w, h):
return round(w * h, 2)

실행파일

from arithmetic import basic_operator as bo
from arithmetic import developer_operator as do

from shape import circle_area as ca
from shape import triangle_square_area as tsa

inputNum1 = float(input('숫자 1 입력: '))
inputNum2 = float(input('숫자 2 입력: '))

print(f'{inputNum1} + {inputNum2} = {bo.add(inputNum1, inputNum2)}')
print(f'{inputNum1} - {inputNum2} = {bo.sub(inputNum1, inputNum2)}')
print(f'{inputNum1} * {inputNum2} = {bo.mul(inputNum1, inputNum2)}')
print(f'{inputNum1} / {inputNum2} = {bo.div(inputNum1, inputNum2)}')

print(f'{inputNum1} % {inputNum2} = {do.mod(inputNum1, inputNum2)}')
print(f'{inputNum1} // {inputNum2} = {do.flo(inputNum1, inputNum2)}')
print(f'{inputNum1} ** {inputNum2} = {do.exp(inputNum1, inputNum2)}')

a = float(input('가로 입력: '))
b = float(input('세로 입력: '))
c = float(input('반지름 입력: '))

print(f'삼각형 넓이: {tsa.calTriangleArea(a,b)}')
print(f'사각형 넓이: {tsa.calSquareArea(a,b)}')
print(f'원 넓이: {ca.calCircleArea (c)}')

05_053 클래스1 회원 가입 & 회원 정보 관리 클래스

회원 가입, 전체 회원 조회, 로그인, 회원 정보 삭제 후 전체 회원 조회 기능들을 클래스로 만들자

모듈 이름 - member.py

class Member:
def init(self, i, p): # 회원 한 명 회원의 아이디와 패스워드를 갖고 있는 객체를 만들기 위한 패스워드
self.id = i
self.pw = p

class MemberRepository: #회원들을 관리하는 클래스
def init(self):
self.members = {} # 딕셔너리

def addMember(self, m): # 회원 추가 / 이 m 이 Member 클래스에서 만들어진 객체가 된다.
self.members[m.id] = m.pw # 키 값은 아이디, 벨류 값은 비밀번호

def loginMember(self, i, p):
isMember = i in self.members # members 안에 아이디가 있으면 아이디 인증을 한다

if isMember and self.members[i] == p:
  print(f'{i}: log-in success')
else:  
  print(f'{i}: log-in fail')
  

def removeMember(self, i, p):
del self.members[i]

def printMembers(self):
for mk in self.members.keys(): # 전체 회원 출력 기능
print(f'ID: {mk}')
print(f'PW: {self.members[mk]}')

실행 파일

import member as mb

mems = mb.MemberRepository() # 객체가 하나 생성될 것이니 변수에 담아줘야

for i in range(3):
mId = input('아이디 입력: ')
mPw = input('비밀번호 입력: ')
mem = mb.Member(mId, mPw) # 이걸 mems 에다가 추가를 해줘야
mems.addMember(mem)

mems.printMembers() # 제대로 추가 되었는지 확인용

mems.loginMember('abc@gmail.com', '1234')
mems.loginMember('def@gmail.com', '5678')
mems.loginMember('hij@gmail.com', '9012')

mems.removeMember('abc@gmail.com', '1234')

mems.printMembers()

profile
데이터 분석가

0개의 댓글