
class PasswordLengthShortException(Exception):
def __init__(self):
super().__init__('길이 5 미만!!')
class PasswordLengthLongException(Exception):
def __init__(self):
super().__init__('길이 10 초과!!')
class PasswordWrongException(Exception):
def __init__(self):
super().__init__('잘못된 비밀번호!!')
adminPassword = 'admin1234'
tryPassword = input('input admin password:')
try:
if len(tryPassword) < 5:
raise PasswordLengthShortException()
elif len(tryPassword) > 10:
raise PasswordLengthLongException()
elif tryPassword != adminPassword:
raise PasswordWrongException()
elif tryPassword == adminPassword:
print('빙고!')
except PasswordLengthShortException as e1:
print(e1)
except PasswordLengthLongException as e2:
print(e2)
except PasswordWrongException as e3:
print(e3)
uri = '/Users/nayoung/Desktop/pythonTxt/'
def writePrimeNum(n):
file = open(uri+'primeNumber.txt', 'a')
file.write(str(n))
file.write('\n')
file.close()
inputNumber = int(input('1보다 큰 정수:'))
for number in range(2,inputNumber +1):
flag = True
for n in range(2, number):
if number % n == 0:
flag = False
break
if flag:
writePrimeNum(number)
uri = '/Users/nayoung/Desktop/pythonTxt/'
scoreDic = {'kor':85, 'eng':90, 'mat':100 }
for key in scoreDic.keys():
with open(uri + 'scoreDic.txt', 'a') as f:
f.write(key + '\t:' + str(scoreDic[key]) + '\n')
uri = '/Users/nayoung/Desktop/pythonTxt/'
scoreDic = {}
with open(uri + 'scoreDic.txt', 'r') as f:
line = f.readline()
while line != '':
tempList = line.split(':')
scoreDic[tempList[0].strip('\t')] = int(tempList[1].strip('\n'))
line = f.readline()
print(f'scoreDic : {scoreDic}')
중급문제풀이
- 함수 - 계산기
def add(num1, num2):
return num1+num2
def sub(num1, num2):
return num1-num2
def mul(num1, num2):
return num1*num2
def div(num1, num2):
result = num1/num2
return round(result , 2)
def mod(num1, num2):
return num1%num2
def flo(num1, num2):
return num1//num2
def exp(num1, num2):
return num1**num2
while True:
print('-' * 30)
num1 = float(input('첫 번째 숫자:'))
num2 = float(input('두 번째 숫자:'))
print('1.덧셈 2.뺄셈 3.곱셈 4.나눗셈 5.나머지 6.몫 7.제곱 8.종료')
selectNum = int(input('번호 선택:'))
if selectNum == 1:
print(f'{num1} + {num2} = {add(num1, num2)}')
elif selectNum == 2:
print(f'{num1} - {num2} = {sub(num1, num2)}')
elif selectNum == 3:
print(f'{num1} * {num2} = {mul(num1, num2)}')
elif selectNum == 4:
print(f'{num1} / {num2} = {div(num1, num2)}')
elif selectNum == 5:
print(f'{num1} % {num2} = {mod(num1, num2)}')
elif selectNum == 6:
print(f'{num1} // {num2} = {flo(num1, num2)}')
elif selectNum == 7:
print(f'{num1} ** {num2} = {exp(num1, num2)}')
elif selectNum == 8:
print('종료합니다.')
break
else:
print('잘못 입력했습니다.')
print('-'*30)
- 함수 - 이동거리, 이동시간 반환
def getDistance(s,h,m):
distance = (h + m/60) * s
return distance
def getTimes(s,d):
t = d/s
h = int(t)
m = int((t-h) * 100 * 60 / 100)
return [h,m]
print('-'*60)
s = float(input('속도(km/h):'))
h = int(input('시간(h):'))
m = int(input('시간(m):'))
d = getDistance(s,h,m)
print(f'{s}(km/h)속도로 {h}시간 {m}분 동안 이동한 거리 : {d}(km)')
print('-'*60)
print('-'*60)
s = float(input('속도(km/h):'))
d = float(input('거리(km/h):'))
t = getTimes(s,d)
print(f'{s}(km/h)속도로 {d}(km) 이동한 시간 : {t[0]}시간 {t[1]}(m)분')
print('-'*60)
- 함수 - 영수증
childPrice = 18000
infantPrice = 25000
adultPrice = 50000
specialDC = 0.5
def formatedNumber(n):
return format(n, ',')
def printAirplaneReceipt(c1,c2,i1,i2,a1,a2):
print('=' * 50)
cp = c1 * childPrice
cp_dc = int(c2 * childPrice * specialDC)
ip = i1 * infantPrice
ip_dc = int(i2 * infantPrice * specialDC)
ap = a1 * adultPrice
ap_dc = int(a2 * adultPrice * specialDC)
print(f'유아 {c1}명 요금: {formatedNumber(cp)}원')
print(f'유아 할인 대상 {c2}명 요금: {formatedNumber(cp_dc)}원')
print(f'소아 {i1}명 요금: {formatedNumber(ip)}원')
print(f'소아 할인 대상 {i2}명 요금: {formatedNumber(ip_dc)}원')
print(f'성인 {a1}명 요금: {formatedNumber(ap)}원')
print(f'성인 할인 대상 {a2}명 요금: {formatedNumber(ap_dc)}원')
print('=' * 50)
total = c1+c2+i1+i2+a1+a2
totalPrice = cp+cp_dc+ip+ip_dc+ap+ap_dc
print('total:{}명'.format(total))
print('total price:{}원'.format(formatedNumber(totalPrice)))
print('=' * 50)
c1 = int(input('유아:'))
c2 = int(input('할인 대상 유아:'))
i1 = int(input('소아:'))
i2 = int(input('할인 대상 소아:'))
a1 = int(input('성인:'))
a2 = int(input('할인 대상 성인:'))
printAirplaneReceipt(c1,c2,i1,i2,a1,a2)
- 함수 - 단리/월복리 계산기
def formattedNum(n):
return format(n,',')
def simpleInterest(m, y, p):
totalMoney=0; totalRateMoney=0
for i in range(y):
totalRateMoney += m * (p*0.01)
totalMoney = m + totalRateMoney
return formattedNum(int(totalMoney))
def multiInterest(m, y, p):
totalMoney = 0; totalRateMoney = 0
y = y*12
rpm = (p/12) * 0.01
totalMoney = m
for i in range(y):
totalMoney += totalMoney*rpm
return formattedNum(int(totalMoney))
inputMoney = int(input('예치금(원):'))
years = int(input('기간(년):'))
yearPercentage = int(input('연 이율(%):'))
print('='*30)
print(f'예치금\t:{formattedNum(inputMoney)}원')
print(f'예치기간\t:{years}년')
print(f'연 이율\t:{yearPercentage}%')
print('='*30)
print('[단리 계산기]')
print(f'{years}년 후 총 수령액:{simpleInterest(inputMoney, years, yearPercentage)}원')
print('='*30)
print('[복리 계산기]')
print(f'{years}년 후 총 수령액:{multiInterest(inputMoney, years, yearPercentage)}원')
print('='*30)
- 함수 - 등차수열
a1 = int(input('a1: '))
nd = int(input('공차: '))
an = int(input('an: '))
valueN = 0; sumN = 0
for i in range(1, an+1):
if i==1:
valueN = a1
sumN = valueN
print(f'{i}번째 항의 값 : {valueN}, 합 : {sumN}')
continue
valueN += nd
sumN += valueN
print(f'{i}번째 항의 값 : {valueN}, 합 : {sumN}')
- 함수 - 등비수열
a1 = int(input('a1: '))
nr = int(input('공비: '))
an = int(input('an: '))
valueN = 0; sumN = 0
for i in range(1, an+1):
if i==1:
valueN = a1
sumN = valueN
print(f'{i}번째 항의 값 : {valueN}, 합 : {sumN}')
continue
valueN *= nr
sumN += valueN
print(f'{i}번째 항의 값 : {valueN}, 합 : {sumN}')
- 모듈 - 과목 합격 여부
def checkScores(s1,s2,s3):
passAvgScore=60; limitScore=40
def getTotalScores():
total = s1+s2+s3
print('-'*30)
print(f'총점:{total}')
return total
def getAverage():
avg = round(getTotalScores() /3 , 2)
print(f'평균:{avg}')
return avg
def passOrFail():
print('-' * 30)
print(f'국어({s1}):통과!') if s1 >= limitScore else print(f'국어({s1}):탈락!')
print(f'영어({s2}):통과!') if s2 >= limitScore else print(f'영어({s2}):탈락!')
print(f'수학({s3}):통과!') if s3 >= limitScore else print(f'수학({s3}):탈락!')
def allPassOrFail():
if getAverage() >= passAvgScore:
if s1>=limitScore and s2>=limitScore and s3>=limitScore:
print('최종: 통과!')
else:
print('최종: 탈락!')
else:
print('최종: 탈락!')
getAverage()
passOrFail()
allPassOrFail()
import passOrFail as pf
if __name__ == '__main__':
s1 = int(input('국어 점수: '))
s2 = int(input('영어 점수: '))
s3 = int(input('수학 점수: '))
pf.checkScores(s1, s2, s3)
- 모듈 - 상품 구매 개수에 따라 할인율 적용
def calculatorTotalPrice(gs):
if len(gs) <= 0:
print('구매 상품이 없습니다.')
return
rate = 25
totalPrice = 0
rates = {1:5, 2:10, 3:15, 4:20}
if len(gs) in rates:
rate = rates[len(gs)]
for g in gs:
totalPrice += g * (1 - rate*0.01)
return [rate, int(totalPrice)]
import discount as dc
if __name__ == '__main__':
flag = True
gs = []
while flag:
print('1.구매 2.종료')
selectNum = int(input('번호 : '))
if selectNum == 1:
productPrice = int(input('상품 가격: '))
gs.append(productPrice)
elif selectNum == 2:
result = dc.calculatorTotalPrice(gs)
print('구매 종료')
flag = False
print(f'할인율 : {result[0]}%')
print(f'가격 : {result[1]}원')
- 모듈 - 로또
import random
userNums=[]; randNums=[]; collNums=[]
bonusNum = 0
def setUserNums(ns):
global userNums
userNums = ns
def getUserNums():
return userNums
def setRandNums():
global randNums
randNums = random.sample(range(1,46), 6)
def getRandNums():
return randNums
def setBonusNum():
global bonusNum
while True:
bonusNum = random.randint(1,45)
if bonusNum not in randNums:
break
def getBonusNum():
return bonusNum
def lottoResult():
global userNums
global randNums
global collNums
for un in userNums:
if un in randNums:
collNums.append(un)
if len(collNums) == 6:
print('1등 당첨!')
print(f'번호:{collNums}')
elif (len(collNums) == 5) and (bonusNum in userNums):
print('2등 당첨!')
print(f'번호:{collNums}, 보너스 번호:{bonusNum}')
elif len(collNums) == 5:
print('3등 당첨!')
print(f'번호:{collNums}')
elif len(collNums) == 4:
print('4등 당첨!')
print(f'번호:{collNums}')
elif len(collNums) == 3:
print('5등 당첨!')
print(f'번호:{collNums}')
else:
print('다음 기회에 ~')
print(f'기계 번호:{randNums}')
print(f'보너스 번호:{bonusNum}')
print(f'선택 번호:{userNums}')
print(f'일치 번호:{collNums}')
def startLotto():
n1 = int(input('번호(1~45) 입력: '))
n2 = int(input('번호(1~45) 입력: '))
n3 = int(input('번호(1~45) 입력: '))
n4 = int(input('번호(1~45) 입력: '))
n5 = int(input('번호(1~45) 입력: '))
n6 = int(input('번호(1~45) 입력: '))
selectNums = [n1,n2,n3,n4,n5,n6]
setUserNums(selectNums)
setRandNums()
setBonusNum()
lottoResult()
import lottoProgram as lp
lp.startLotto()