
속도(km/h)와 시간(h)을 입력받아 이동거리(km)를 연산해주는 함수와
속도(km/h)와 이동거리(km)를 입력받아 이동시간(h)을 연산해주는 함수를 정의
def getDistance(speed, hour, minute): distance = speed * (hour + (minute / 60)) return distance
[ 거리(km) = 속도(km/h) × 시간(h) ] 공식을 사용한다.
매개변수로 속도와 시간을 받아온다.
이때 시간은 시(h) 단위와 분(m) 단위로 받는다.
✔ 시간 데이터를 입력받을 때 시간과 분을 따로 받을 수 있게 한다.
s = float(input('속도(km/h) 입력: '))
h = float(input('시간(h) 입력: '))
m = float(input('시간(m) 입력: '))
def getDistance(speed, hour, minute):
따로 입력받은 분(m)은 시(h) 단위로 환산하기 위해 60으로 나눈다.
최종 시간값은 (hour + (minute / 60))h 이다.
입력받은 속도와 최종 시간값을 곱해 이동거리를 계산한 후 결과값을 반환한다.
distance = speed * (hour + (minute / 60))
return distance
def getTime(speed, distance): time = distance / speed hour = int(time) minute = int((time - hour) * 60) return [hour, minute]
입력받은 속도와 거리를 인수로 받아온다.
s = float(input('속도(km/h) 입력: '))
d = float(input('거리(km) 입력: '))
getTime(s, d):
[ 시간(h) = 거리(km) / 속도(km/h) ] 공식을 이용해 이동시간을 구한다.
time = distance / speed
시간 결과는 시(h) 단위와 분(m) 단위로 나누어 반환한다.
return [hour, minute]
시간 결과값이 실수이므로 적절한 단위 변환이 필요하다.
✔ 시(hour)는 int() 함수로 캐스팅하여 소수부분을 버리고 정수만 사용한다.
ex> time = 2.1166666666666667일때
int(time) ➡ time = 2 가 된다.
✔ 분(minute)은 time값의 소수부분에 60만 곱하면 된다.
ex> (time - int(time)) * 60
➡ 연산 결과가 실수이므로 int형으로 캐스팅해준다.
hour = int(time)
minute = int((time - hour) * 60)
시간 변환은 간단한 연산이므로 별도로 함수를 만들지는 않았다.
time = 2.12h --> 1h : 60m = 0.12h : x
--> x = (60 * 0.12)m
print('-' * 60)
s = float(input('속도(km/h) 입력: '))
h = float(input('시간(h) 입력: '))
m = float(input('시간(m) 입력: '))
d = getDistance(s, h, m)
print(f'{s}(km/h)속도로 {h}(h)시간 {m}(m)분 동안 이동한 거리: {d}(km)')
print('-' * 60)
print('-' * 60)
s = float(input('속도(km/h) 입력: '))
d = float(input('거리(km) 입력: '))
t = getTime(s, d)
print(f'{s}(km/h) 속도로 {d}(km) 이동한 시간: {t[0]}(h)시간 {t[1]}(m)분')
print('-' * 60)
# 실행결과
------------------------------------------------------------
속도(km/h) 입력: 90
시간(h) 입력: 2
시간(m) 입력: 7
90.0(km/h)속도로 2.0(h)시간 7.0(m)분 동안 이동한 거리: 190.5(km)
------------------------------------------------------------
------------------------------------------------------------
속도(km/h) 입력: 90
거리(km) 입력: 190.5
time: 2.1166666666666667
90.0(km/h) 속도로 190.5(km) 이동한 시간: 2(h)시간 7(m)분
------------------------------------------------------------
과목별 점수로 합격 여부를 출력하는 함수를 모듈로 만들고,
이를 실행 파일에서 import하여 사용한다.

과목별 점수를 받아와 총점과 평균을 구하고 합격 여부를 출력하는 '시험결과' 함수를 정의한다.
def examinationResult(*scores):
몇 개의 인수를 받을지 개수를 정하지 않고 *를 사용해 매개변수를 정의한다.
✔ 함수 호출부에서 과목별 점수를 나열해서 인수로 넘겨주면
함수 내부에서 scores는 <class 'tuple'>형으로 값을 받는다.
exampleResult(sub1, sub2, sub3, sub4, sub5)
'시험결과' 함수 내에 총점과 평균을 구하는 함수를 정의한다.
각 함수는 결과값을 반환하고, 그 결과도 같이 출력한다.
✔ scores 자료형이 열거형이므로
합계를 반환하는 sum()함수와 길이를 반환하는 len()함수를 사용할 수 있다.
'시험결과' 함수 호출로 모든 결과가 보여지도록 출력함수를 정의한다.
def printSubjetPassOrFail():
sub_pass_flag = True
for idx, score in enumerate(s):
if score >= subLimitScore:
print(f'과목{idx + 1}: Pass')
else:
print(f'과목{idx + 1}: Fail')
sub_pass_flag = False
return sub_pass_flag
✔ for문을 돌면서 과목별 과락여부를 판단해 'Pass'인지 'Fail'인지 보여주고,
과락이 있으면 sub_pass_flag로 False를 리턴한다.
- enumerate 클래스를 이용해 각 점수별로 차례차례 index를 붙여
과목을 구분해서 출력한다.
def printFinalPassOrFail():
result = ''
if (getAverage() >= passAvgScore) and printSubjetPassOrFail():
result = 'Final Pass!!'
else:
result = 'Final Fail!!'
print(result)
printFinalPassOrFail()
✔ 시험 전체 합격 여부를 판단해 결과를 출력하는 함수를 정의한다.
- getAverage() 함수를 호출해 평균이 합격점인지 판단하고,
- printSubjetPassOrFail() 함수를 호출해 과락여부를 판단한다.
- 둘 다 True 여야만 전체 시험 PASS!가 된다.
- 마지막으로 '시험결과' 함수 내 정의된 모든 함수가 호출되도록
printFinalPassOrFail() 함수를 호출해 준다.

# <Q> --------------------------------------------------------
# 과목별 점수를 입력하면 합격 여부를 출력하는 모듈
# (평균 60이상이면 합격!, 과락은 40으로 한다.)
import module_PassOrFail as pf
if __name__ == '__main__':
sub1 = int(input('과목1 점수 입력: '))
sub2 = int(input('과목2 점수 입력: '))
sub3 = int(input('과목3 점수 입력: '))
sub4 = int(input('과목4 점수 입력: '))
sub5 = int(input('과목5 점수 입력: '))
pf.exampleResult(sub1, sub2, sub3, sub4, sub5)
실행 파일에서 모듈을 import하고 '시험결과' 함수를 호출한다.
pf.exampleResult(sub1, sub2, sub3, sub4, sub5)
실행 결과
