2일차다. 매일 10분이라고는 했는데 지금은 지문을 읽고 만들고 비교하는 방식으로 가고 있어서 안세기로 했다.
그치만 처음 문제가 너무 간단해서 오늘은 다음거 갔다.
그리고 막히는 부분 있으면 슬쩍 보거나 추가하고 싶은거 있으면 검색해서 코드가 좀 다르다.

이번에는 숫자 여러개를 매개변수로 받아 사용하는 방법에 대한 문제다.
요구사항은 아래와 같다.
- sum 함수 만들기
- 숫자를 여러개를 받아야 한다.
함수를 만들 때 매개변수에 *을 붙인다. 이것을 튜플이라고 부르는데 셀 수 있는 수량의 순서 있는 열거라고 한다.
간단하게 말해서 매개변수에 숫자 여러개를 가진다는 것이다.
파이썬의 for문은 C와 다르게 number 매개변수의 처음과 끝을 순차적으로 불러온다.
아무튼 그렇게 number 매개변수를 for문으로 하나씩 result 변수에 더해주고 return해주면 끝난다.
def sum(*number):
result = 0
for i in number:
result += i
return result
print(sum(1,2,3))
다음은 입력을 적절한 자료형으로 변환하여 처리하는 방법에 대한 문제다.
요구사항
- 10km를 뛰는데 걸린 시간을 입력받는다,
- 엔터키를 입력받으면 종료.
- 종료 시 걸린 시간의 평균을 출력한다.
파이썬은 입력받은게 숫자든 문자든 무조건 문자열로 취급한다. 입력받은것이 엔터이면 빈 문자열을 받았다는 소리다.
파이썬의 if는 빈 문자열과 0을 받으면 false로 변환된다. if not으로 엔터를 입력받았다는 것을 확인하고 반복문을 종료했다. 여기서 사용한 {변수 :.2f}는 f-문자열에서 소수점을 지정하는 방법으로 변수에 들어 있는 값을 소수점 둘째 자리(.2)까지 출력하겠다는 소리이다. 그리고 아무 숫자도 입력하지 엔터를 누르면 오류가 나길래 timesum이 0보다 클 때로 예외처리 했다.
평균을 구하기 위해 입력을 모두 합하고 받은만큼 나눠야하는데 앞서 말했듯 입력받은 것은 무조건 문자열로 취급되기 때문에 숫자로 쓰기 위해 형변환을 해줘야한다. 책에서는 float로 변환하라고 했지만 그걸 못봐서 int로 형변환 해버렸다. 아무튼 그렇게 총합에 더하고 횟수를 나눠서 출력했다.
그리고 숫자가 아닌 문자를 받으면 안되기 때문에 문자인지 숫자인지 확인하는 함수를 사용했다. isalpha는 해당 변수가 숫자인지 확인해주는 함수이고 elif는 else if다.
def stop_watch():
timesum = 0
timenum = 0
while True:
time = input('10km 걸린 시간 : ')
if not time:
if timesum > 0:
print(f'{timenum}번을 달린 평균 : {timesum/timenum:.2f}')
else:
print('0번을 달린 평균 : 0')
break
elif time.isalpha():
print('잘못 입력하였습니다')
else:
timesum += int(time)
timenum += 1
stop_watch()
'공부 > 파이썬' 카테고리의 다른 글
파이썬 공부 1일차 (0) | 2023.02.05 |
---|