[강의 요약]
[Ch 02. 파이썬 기초 문제풀이] 강의 수강
48_연산자(01)부터 52_연산자(05)까지 강의 수강하였음
연습문제 다루는 강의는 코드 부분과 간단한 코드 해석으로 글을 구성할 예정
그런데 연산자 부분은 대학교 강의에서 실습코드 정도의 난이도여서
코드를 많이 스킵해서 작성했다.
[연산자]
▶ 고도에 따라 기온을 계산하는 프로그램
기온은 고도가 높아질수록 낮아진다는 원리를 코드로 구현함
baseTemp = 29
step = 60
stepTemp = 0.8
height = int(input('고도 입력: '))
targetTemp = baseTemp - (height // step * 0.8)
if height % step != 0:
targetTemp -= stepTemp
print('지면 온도: {}'.format(baseTemp))
print('고도 {}m의 기온: {}'.format(height, targetTemp))
★코드 설명★
사용한 변수 설명
- baseTemp : 기준 온도 (지면 온도)
- step : 고도 간격 (ex. 60m 올라갈 때마다)
- stepTemp : 기온 하강폭. 60m당 -0.8도씩 감소
- height : 사용자가 입력한 고도 (ex. 150m)
코드 로직
- height // step : 고도에 따라 몇 "단계"만큼 올라갔는지 (ex. 150m → 2단계)
- * 0.8 : 단계당 0.8도씩 감소
- height % step != 0 : 딱 맞아떨어지지 않는 경우, 즉 중간 높이까지 올라갔으면 → 한 단계 더 빼줌
고도 150m의 기온은?
- 150 // 60 = 2 → 2 * 0.8 = 1.6 → 29 - 1.6 = 27.4
- 150 % 60 = 30 → 나머지 존재함 → -0.8 해줘야함
- 27.4 - 0.8 = 26.6
▶ 위 코드 최적화
어떻게 코드를 최적화하면 좋을까?
- 먼저 변수명을 더 가독성이 좋게 변경
- 온도 하강량 계산을 조건문 사용 없이 math.ceil()로 단순하게 계산
- .1f 로 소수점 한 자리까지 출력
- 전 글에서도 말했던 f-string으로도 원래 코드를 대체
# 기본값 설정
base_temp = 29.0
cooling_rate = 0.8
altitude_step = 60
# 고도 입력
height = int(input('고도 입력 (단위: m): '))
# 올림: 고도 1m라도 올라가면 그 구간 전체 적용
import math
steps = math.ceil(height / altitude_step)
target_temp = base_temp - (steps * cooling_rate)
# 출력
print(f'지면 온도: {base_temp}°C')
print(f'고도 {height}m의 기온: {target_temp:.1f}°C')
☆ math.ceil() 은 왜 사용했고 뭘까?
- 기본 설명
- 소수점이 조금이라도 있으면 무조건 올림함
- 정수보다 크거나 같은 가장 작은 정수로 만들어줌
- 사용 방법
- import math 필수
- 아래 코드 참고
- 사용한 이유
- 150 // 60, 150 % 60 결과 여부로 값을 빼줘야 함
- 사실상 올림을 하고 있는 것이라 150 / 60에 ceil을 하는 게 편함
- // 나누기 + if 조건문 없이 깔끔하게 계산하기 위함
- TMI
- math.ceil()은 올림인데 반대로 내림을 하는 math.floor()도 있음
- math.floor(4.3) → 4
- math.floor(-4.3) → -5
import math
print(math.ceil(4.1)) # 결과: 5
print(math.ceil(7.9)) # 결과: 8
print(math.ceil(5.0)) # 결과: 5 (정수는 그대로 유지)
print(math.ceil(-1.2)) # 결과: -1 (음수도 올림된다!)
[나의 생각 정리]
- 쉬운 코드에 경우 어떻게 하면 더 최적화를 시킬지 고민하는 시간을 가졌음
[적용점]
- 고민하는 시간을 조금만 더 가진다면 코드를 더 간결하게 작성할 수 있음
“이 글은 제로베이스 데이터 스쿨 주 3일반 강의 자료 일부를 발췌하여 작성되었습니다.”
'제로베이스 데이터 취업 파트타임 > 100일 챌린지_일일 학습 일지' 카테고리의 다른 글
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.27] (0) | 2025.03.27 |
---|---|
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.26] (0) | 2025.03.27 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.24] (0) | 2025.03.24 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.23] (0) | 2025.03.23 |
제로베이스 데이터 파트타임 스쿨 학습 일지 [25.03.22] (1) | 2025.03.22 |