korAvg = 85; engAvg = 82; matAvg = 89; sciAvg = 75; hisAvg = 94;
totalAvg = korAvg+engAvg+matAvg+sciAvg+hisAvg
avgAvg = int(totalAvg / 5)
korScore = int(input('국어 점수 : '))
engScore = int(input('영어 점수 : '))
matScore = int(input('수학 점수 : '))
sciScore = int(input('과학 점수 : '))
hisScore = int(input('국사 점수 : '))
totalScore = korScore +engScore+ matScore+sciScore+ hisScore
avgScore = int(totalScore / 5)
korGap = korScore - korAvg
engGap = engScore - engAvg
matGap = matScore - matAvg
sciGap = sciScore - sciAvg
hisGap = hisScore - hisAvg
print('-'*70)
print('총점 : {}({}), 평균 : {}({})'.format(totalScore,totalScore-totalAvg, avgScore,avgScore-avgAvg))
print('국어 : {}({}), 영어 : {}({}), 수학 : {}({}), 과학 : {}({}), 국사 : {}({}) '.format(korScore,korGap,engScore,engGap\
,matScore,matGap,sciScore,sciGap,
hisScore,hisGap))
print('-'*70)
str = '+' if korGap > 0 else '-'
print('국어 편차: {}({})'.format(str*abs(korGap),korGap))
str = '+' if engGap > 0 else '-'
print('영어 편차: {}({})'.format(str*abs(engGap),engGap))
str = '+' if matGap > 0 else '-'
print('수학 편차: {}({})'.format(str*abs(matGap),matGap))
str = '+' if sciGap > 0 else '-'
print('과학 편차: {}({})'.format(str*abs(sciGap),sciGap))
str = '+' if hisGap > 0 else '-'
print('국사 편차: {}({})'.format(str*abs(hisGap),hisGap))
print('-'*70)
국어 점수 : 90
영어 점수 : 80
수학 점수 : 70
과학 점수 : 60
국사 점수 : 50
----------------------------------------------------------------------
총점 : 350(-75), 평균 : 70(-15)
국어 : 90(5), 영어 : 80(-2), 수학 : 70(-19), 과학 : 60(-15), 국사 : 50(-44)
----------------------------------------------------------------------
국어 편차: +++++(5)
영어 편차: --(-2)
수학 편차: -------------------(-19)
과학 편차: ---------------(-15)
국사 편차: --------------------------------------------(-44)
----------------------------------------------------------------------
abs() : 절대값으로 변환해주는 함수
jobType = int(input('업종 선택(1.가정용 \t2.대중탕용 \t3.공업용) :'))
waterUse = int(input('사용량 입력:'))
result =''
if jobType == 1:
result = waterUse * 540
elif jobType == 2:
if waterUse <= 50:
result = waterUse * 820
elif waterUse > 50 and waterUse <= 300:
result = waterUse*1920
elif waterUse > 300:
result = waterUse *2400
elif jobType == 3:
if waterUse <= 500:
result = waterUse * 240
else:
result = waterUse *470
else:
print('잘못 입력 했습니다.')
print("="*30)
print('상수도 요금 표')
print('-'*30)
print(f'사용량 \t:\t요금')
print('{} \t:\t{}원'.format(waterUse,format(result,',')))
print("="*30)
업종 선택(1.가정용 2.대중탕용 3.공업용) :2
사용량 입력:270
==============================
상수도 요금 표
------------------------------
사용량 : 요금
270 : 518,400원
==============================
import random
rNum = random.randint(1,1000)
userSelectCnt = 0
flag = True
while flag:
userSelectCnt += 1
userSelectNum = int(input('1에서 1000까지의 정수 입력: '))
if rNum == userSelectNum:
print('빙고!')
flag = False
else:
if rNum > userSelectNum:
print('난수가 크다')
else:
print('난수가 작다')
print('난수 : {}, 시도 횟수 : {}'.format(rNum,userSelectCnt))
1에서 1000까지의 정수 입력: 500
난수가 크다
1에서 1000까지의 정수 입력: 750
난수가 작다
1에서 1000까지의 정수 입력: 650
난수가 크다
1에서 1000까지의 정수 입력: 700
난수가 크다
1에서 1000까지의 정수 입력: 725
난수가 작다
1에서 1000까지의 정수 입력: 715
난수가 크다
1에서 1000까지의 정수 입력: 720
난수가 크다
1에서 1000까지의 정수 입력: 723
난수가 크다
1에서 1000까지의 정수 입력: 724
빙고!
난수 : 724, 시도 횟수 : 9
for i in range(1,6):
for j in range(i):
print('*', end='')
print()
*
**
***
****
*****
for i1 in range(1,6):
for i2 in range(5-i1):
print(' ',end='')
for i3 in range(i1):
print('*',end='')
print()
*
**
***
****
*****
for i in range(5,0,-1):
for j in range(i):
print('*',end='')
print()
*****
****
***
**
*
for i in range(5,0,-1):
for j in range(5-i):
print(' ',end='')
for k in range(i):
print('*',end='')
print()
*****
****
***
**
*
for i in range(1,10):
if i<5 :
for j in range(i):
print('*', end='')
else:
for j in range(10 -i):
print('*', end='')
print()
*
**
***
****
*****
****
***
**
*
for i in range(1,6):
for j in range(1,6):
if i == j:
print('*',end='')
else:
print(' ',end='')
print()
*
*
*
*
*
for i in range(5,0, -1):
for j in range(1,6):
if j == i:
print('*', end='')
else:
print(' ', end='')
print()
*
*
*
*
*
for i1 in range(1, 6):
for i2 in range(5 - i1):
print(' ', end='')
for n3 in range(i1 * 2 - 1):
print('*', end='')
print()
for i1 in range(1, 6):
for i2 in range(i1 - 1):
print(' ', end='')
for n3 in range(11 - (i1 * 2)):
print('*', end='')
print()
*
***
*****
*******
*********
*********
*******
*****
***
*
busA = 15
busB = 13
busC = 8
totalMin = 60*17
for i in range(totalMin+1):
if i<20 or i > totalMin - 60:
if i % busA == 0 and i % busB ==0:
print('busA와 busB 동시 정차!!', end='')
hour = 6 + i //60
min = i % 60
print('{}:{}'.format(hour,min))
else:
if i % busA == 0 and i % busB == 0:
print('busA와 busB 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('{}:{}'.format(hour, min))
elif i % busA == 0 and i % busC ==0:
print('busA와 busC 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('{}:{}'.format(hour, min))
elif i % busB == 0 and i % busC ==0:
print('busB와 busC 동시 정차!!', end='')
hour = 6 + i // 60
min = i % 60
print('{}:{}'.format(hour, min))
busA와 busB 동시 정차!!6:0
busB와 busC 동시 정차!!7:44
busA와 busC 동시 정차!!8:0
busA와 busB 동시 정차!!9:15
busB와 busC 동시 정차!!9:28
busA와 busC 동시 정차!!10:0
busB와 busC 동시 정차!!11:12
busA와 busC 동시 정차!!12:0
busA와 busB 동시 정차!!12:30
busB와 busC 동시 정차!!12:56
busA와 busC 동시 정차!!14:0
busB와 busC 동시 정차!!14:40
busA와 busB 동시 정차!!15:45
busA와 busC 동시 정차!!16:0
busB와 busC 동시 정차!!16:24
busA와 busC 동시 정차!!18:0
busB와 busC 동시 정차!!18:8
busA와 busB 동시 정차!!19:0
busB와 busC 동시 정차!!19:52
busA와 busC 동시 정차!!20:0
busB와 busC 동시 정차!!21:36
busA와 busC 동시 정차!!22:0
busA와 busB 동시 정차!!22:15
gearACnt = int(input('GearA 톱니수 입력 :'))
gearBCnt = int(input('GearB 톱니수 입력 :'))
gearA = 0
gearB = 0
leastNum = 0
flag = True
while flag:
if gearA != 0:
if gearA != leastNum:
gearA += gearACnt
else:
flag = False
else:
gearA += gearACnt
if gearB != 0 and gearB % gearACnt == 0:
leastNum = gearB
else:
gearB += gearBCnt
print('최초 만나는 톱니 수 (최소공배수):{}톱니'.format(leastNum))
print('GearA 회전수: {}, gearB 회전수: {}'.format(gearA//gearACnt, gearB//gearBCnt))
GearA 톱니수 입력 :7
GearB 톱니수 입력 :12
최초 만나는 톱니 수 (최소공배수):84톱니
GearA 회전수: 12
gearB 회전수: 7
- 내장 함수 : 파이썬에서 기본으로 제공하는 함수
- 사용자 지정 함수 : 사용자가 직접 선언하는 함수
- 함수 사용 이유: 특정 기능을 효율적으로 재사용 하기 위해(변수 사용 이유와 유사)
- 함수명과 '()'를 이용해서 함수를 호출한다.
#함수선언
def culMulDiv():
n1 = int(input('n1 입력: '))
n2 = int(input('n2 입력: '))
print(f'n1 * n2 = {n1*n2}')
print(f'n1 / n2 = {round(n1/n2,2)}') #round(n1/n2,2)는 n1/n2를 소수점 2째자리까지 출력
#함수호출
culMulDiv()
n1 입력: 10
n2 입력: 3
n1 * n2 = 30
n1 / n2 = 3.33
def fun1():
print('fun1 호출')
fun2()
def fun2():
print('fun2')
fun3()
def fun3():
print('fun3')
fun1()
fun1 호출
fun2
fun3
- 인수 : 함수 호출부에서 던지는 데이터
- 매개변수 : 인수를 어떠한 변수로 받는 것(변수의 일종으로 해당 함수 안에서만 사용하는 지역변수)
- 인수와 매개변수의 개수는 일치해야 한다.
- 매개변수 개수가 정해지지 않았을 때는 '*'를 사용한다.
- [매개변수 개수] 를 [입력한 인수의 개수]와 [맞춰준다] 라고 생각(내생각)
- 함수 실행 결과를 호출부로 반환 할 수 있다.
- 함수 자체를 변수처럼 이용할 때 return을 사용하는 듯. 매번 그렇진 않다.
- 함수가 return을 만나면 실행을 종료한다.
import random
def rNumOdd():
while True:
rNum = random.randint(1,100)
if rNum % 2 !=0:
break
return rNum
returnValue = rNumOdd()
print(f'returnValue : {returnValue}')
returnValue : 55
- 함수 밖에 선언된 변수로 어디에서나 사용은 가능하지만 함수 안에서 수정은 불가하다.
- 함수 안에 선언된 변수로 함수 안에서만 사용 가능하다.
#전역변수 선언
num_out = 10
#함수 선언
def printNimbers():
global num_out
#전역변수 변경
num_out = 20
print(f'num_out : {num_out}')
printNimbers()
print(f'num_out : {num_out}')
num_out : 20
num_out : 20
totalVisit = 0
def countTotalVisit():
global totalVisit
totalVisit +=1
print(f'누적방문객 : {totalVisit}')
return totalVisit
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
countTotalVisit()
누적방문객 : 1
누적방문객 : 2
누적방문객 : 3
누적방문객 : 4
누적방문객 : 5
- 함수 안에 또 다른 함수가 있는 형태
- 내부 함수를 함수 밖에서 호출 할 수 없다.
def calculator(n1,n2,operator):
def addCal():
print(f'덧셈 연산 : {n1+n2}')
def subCal():
print(f'뺄셈 연산 : {n1 - n2}')
def mulCal():
print(f'곱셈 연산 : {n1 * n2}')
def divCal():
print(f'나눗셈 연산 : {n1 / n2}')
if operator == 1:
addCal()
elif operator ==2:
subCal()
elif operator ==3:
mulCal()
elif operator ==4:
divCal()
while True:
num1 = float(input('실수(n1) 입력:'))
num2 = float(input('실수(n2) 입력:'))
operatorNum = int(input('1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.종료'))
if operatorNum ==5:
print('Bye~')
break
calculator(num1,num2,operatorNum)
실수(n1) 입력:4
실수(n2) 입력:3
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.종료1
덧셈 연산 : 7.0
실수(n1) 입력:5
실수(n2) 입력:6
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.종료2
뺄셈 연산 : -1.0
실수(n1) 입력:6
실수(n2) 입력:5
1.덧셈, 2.뺄셈, 3.곱셈, 4.나눗셈, 5.종료5
Bye~
- 함수 선언을 보다 간단하게 할 수 있다.
- 간단한 계산식 함수 선언으로 좋다.
calculator = lambda n1,n2:n1+n2 #간단한 함수는 이런식으로 선언및 호출 가능
returnVAl = calculator(10, 20)
print(f'returnVal = {returnVAl}')
returnVal = 30
- 이미 만들어진 훌륭한 기능으로 사용자가 쉽게 사용 가능
- 내부모듈: 파이썬에 기본적으로 사용할 수 있는 모듈
- 외부모듈 : 별도 설치 후 사용할 수 있는 모듈 --> 판다스, 넘파이 ...
- 사용자 모듈 : 사용자가 직접 만든 모듈
- 모듈은 특정 기능을 가지고 있는 파이썬 파일(xxx.py)을 말한다.
# <ranNum.py> --> 따로 생성한 .py파일
#모듈 제작
import random
def lotNumMaker():
result = random.sample(range(1,46),6)
return result
<lottoNumberMaker.py> --> 메인 패이지
#제작한 모듈 선언
import ranNum
#모듈 사용법 : 모듈명.모듈 내부 함수
returnNum = ranNum.lotNumMaker()
print(f'로또번호 : {returnNum}')