파이썬 중급 5(모듈제작), 파이썬 중급 문제풀이 1 ~ 2
지난시간에 만들었던 4칙연산 기능을 하는 calculator 를 .py 파일로 따로 저장하면 그또한 모듈이 되는것이다.
calculator 같은 .py 파일을 하나 만든다.
모듈을 활용한 .py파일을 하나 더 만든다.
모듈을 활용할 곳에서 import calculator 를 한 후 마치 이 파일에 작성한 것 처럼 활용한다.
예제) 문자열을 입력하면 뒤집어서 출력하는 모듈
#뒤집어서 반환하는 모듈 reverseStr.py
def reverseStr(str):
reverseString = ''
for c in str:
reverseString = c + reverseString
return reverseString
#모듈을 활용해서 출력하는 module.py
import reverseStr
userInputStr = input('문자열 입력: ')
reverseString = reverseStr.reverseStr(userInputStr)
print(f'reverseString: {reverseString}')
reverseStr.py 부터 살펴보면
1. parameter로 들어온 값을 매개변수로 str이 받는다.
2. 변수 reverseString 을 선언.
3. for 문을 통해 입력받을 str 값에서 c로 나눠서 한글자씩 뒤로 밀면서 저장한다.
7가지의 함수를 선언하고, 골라서 사용할 수 있게 만들어본다!
def add(n1, n2):
return n1 + n2
def sub(n1, n2):
return n1 - n2
def mul(n1, n2):
return n1 * n2
def div(n1, n2):
return n1 / n2
def mod(n1, n2): #나머지 구하는 연산자
return n1 % n2
def flo(n1, n2): #몫 구하는 연산자
return n1 // n2
def exp(n1, n2):
return n1 ** n2
while True: #계속 돈다.
print('-' * 60)
selectNum = int(input('1. 덧셈, 2. 뺄셈, 3. 곱셈, 4. 나눗셈, 5. 나머지, 6. 몫, 7. 제곱, 8. 종료 '))
if selectNum == 8:
print('Bye~')
break
num1 = float(input('첫 번째 숫자 입력: '))
num2 = float(input('두 번째 숫자 입력: '))
if selectNum == 1:
add(num1, num2)
print(f'{num1} + {num2} = {add(num1, num2)}')
elif selectNum == 2:
sub(num1, num2)
print(f'{num1} - {num2} = {sub(num1, num2)}')
elif selectNum == 3:
mul(num1, num2)
print(f'{num1} * {num2} = {mul(num1, num2)}')
elif selectNum == 4:
div(num1, num2)
print(f'{num1} / {num2} = {div(num1, num2)}')
elif selectNum == 5:
mod(num1, num2)
print(f'{num1} % {num2} = {mod(num1, num2)}')
elif selectNum == 6:
flo(num1, num2)
print(f'{num1} // {num2} = {flo(num1, num2)}')
elif selectNum == 7:
exp(num1, num2)
print(f'{num1} ** {num2} = {exp(num1, num2)}')
else:
print('잘못 입력하셨습니다. 다시 입력하세요.')
print('-' * 60)
중급넘어왔다고 바로 길어져버렸다.... 하지만! 이해를 하고 넘어가야하니 설명간다.
- def 부분은 순서대로 덧셈, 뺄셈, 곱셈, 나눗셈, 나머지, 몫, 제곱을 구하는 함수를 선언.
- while 반복문은 조건이 참 일동안 도는데 True 를 넣어줘서 사실상 계속 도는 구조를 만든다.
- 빠져나가긴 해야하니 8 번은 break 를 걸어준다. (★ while문 만들면 탈출구 부터 찾아두자!!)
- 어떤 함수든 인수를 넣어줘야 하니까 input 값을 받아줄 num1, num2 를 선언.
- 어떤 함수를 사용할지를 골랐을 때 나올 수 있도록 if, elif 그리고 범위를 넘어갔을 때 돌려줄 else.
코드와 설명은 간단하지만 길어졌다고 쫄았다...
요구하는 출력물을 만들어내라!
def getDistance(speed, hout, minute):
return speed * (hout + (minute / 60))
# print(getDistance(s, h, 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)분 동안 이동한 거리 : {getDistance(s, h, m)}(km)')
- s, h, m 변수로 속도, 시간, 분 을 입력받는다. (easy)
- 속도와 시간으로 거리를 구해야하므로 거시속, 거속시 공식을 getDistance 함수로 만든다.
- 단위를 맞춰줘야 하기에 분은 60분 기준으로 맞춘다. (입력값은 시간값이므로 60으로 나누어 분으로 맞춤)
나쁘지 않은 난이도 였지만 거시속, 거속시 공식에서 단위를 맞추어 주는것이 포인트인듯한 문제.
def getTime(speed, distance):
time = distance / speed
print(f'time: {time}')
h = int(time)
m = int((time - h) * 100 * 60 / 100)
return [h, m] #값이 2개라 리스트로 묶어서 반환
s = float(input('속도(km/h)를 입력하시오. '))
d = float(input('거리(km/h)를 입력하시오. '))
t = getTime(s, d)
print(f'{s}(km/h)속도로 {d}(km) 이동한 시간: {t[0]}(h)시간 {t[1]}(m)분')
print('*' * 60)
- getTime 함수로 속도, 거리를 받아 시간을 구한다.
- 100 기준 75 이니 60분 기준일 때 시간은 x 다 ☞ 100 : 75 = 60 : x 로 거시속 공식!
- 결과물에서 시간을 h, m 두 개로 나누었기 때문에 시간(t) 값을 list[h, m]으로 반환!
1번 문제와 비슷했지만 역시 단위 환산과 시간을 리스트로 묶는 센스를 볼 수 있는 문제였다.
● MAC 기준 작성하다 Windows와 키를 헷갈려서 복붙한다는게 [control + c] 를 눌렀는데 input을 입력할 수 없는 keyboardinterrupt error가 발생해서 애 먹었다...
다시 한번 [control + c] 이 친구를 입력하면 풀리니 당황하지 마시길!!
🔥🔥바쁜시간 쪼개서 매일매일 성장해 나가는 모습을 기록하자!🔥🔥