데이터 놀이터
Section 5 - Sprint 1. Python and Problem Solving - 2. Problem Solving 본문
Section 5 - Sprint 1. Python and Problem Solving - 2. Problem Solving
jjjk84 2023. 4. 20. 01:07오늘의 키워드
- comprehension
- 의사코드
- 예외처리
알게된 내용
1. comprehension
comprehension은 한 줄로 파이썬 기능을 구현할 수 있는 기능으로 코드 간소화를 위해 사용된다.
list comprehension은 많이 사용해서 이제 익숙해졌는데 dictionary, set comprehension도 존재한다는걸 배웠다.
dictionary와 set는 둘 다 {}안에서 comprehension 문을 구현한다는 점에서 공통점이 있다.
하지만 dictionary는 key:value 형태로 선언을 해준다는 점에서 차이점이 있다.
## Dictionary comprehension
test = {'A': 5, 'B': 7, 'C': 9, 'D': 6, 'E': 10}
test = {k:v for k,v in test.items() if k != 'E'} # key가 E를 제외한 나머지를 출력
print(test)
## Set comprehension
test = {'A': 5, 'B': 7, 'C': 9, 'D': 6, 'E': 10}
test = {k for k in test.keys() if k != 'E'}
print(test)
참고자료 : https://wikidocs.net/138204
2. 의사코드(pseudocode)
의사코드는 알고리즘 문제를 해결하기 전에 프로그래밍 로직을 작성하는 것을 말한다.
print 안녕하세요. 나이를 입력하세요.
while True:
나이 입력
if 나이 < 14:
입장불가
else:
print 원하시는 좌석 등급을 입력하세요
좌석 등급 입력
if 좌석 등급 VIP:
가격 99000원
else:
가격 55000원
print 해당 좌석 등급은 {가격} 입니다.
break
이런 식으로 나중에 프로그래밍을 위한 뼈대를 세운다고 생각하면 쉽다.
참고자료 : https://42kchoi.tistory.com/114
3. 예외 처리
전에는 try ~ except 문만 사용했었는데 for(while) ~ else, try ~ except ~ else ~ finally를 배우게 되었다.
(1) for(while) ~ else
for(while) ~ else에서 else문은 반복문 내에 break가 설정되어있을 경우 break가 발생하지 않고 정상적으로 빠져나왔다면 실행된다.
## for ~ else
for i in range(1, 4):
print('loop : ', i)
else:
print('No break')
## while ~ else
i = 1
while i <= 2:
if i == 3:
break
else:
print('loop : ', i)
i+=1
else:
print('No break')
참고자료 : https://wikidocs.net/190098
(2) try ~ except ~ else ~ finally
try ~ except ~ else ~ finally 에서 else는 예외가 발생하지 않았을 때 실행되며 finally는 예외 유무 없이 무조건 실행된다.
else를 잘 활용하면 try ~ except만 쓸때보다 가독성이 훨씬 늘어난다.
Section4 프로젝트를 수행하면서 크롤링 할때도 이 예외처리가 큰 역할을 했다.
물론 오류가 없는 것이 가장 좋은 경우지만 현실적으로 모든 경우를 처리하는게 불가능하기 때문에 예외처리를 잘 사용해야한다.
def disneyland():
try:
age = int(input("나이를 입력해주세요: "))
except ValueError as e: # e는 다른 명칭을 사용해도 괜찮다.
print("숫자로 나이를 입력해주세요.")
print(e) # 에러에 대한 메세지 출력
else:
# 3세 미만은 공짜
if age < 3:
fee = 0
# 3세~9세: 50,000
elif age >= 3 and age < 10:
fee = 50000
else:
fee = 100000
return fee
finally:
print("디즈니 랜드에 오신 것을 환영합니다~!")
disneyland()
더 알아봐야할 것
- 백준 문제 풀면서 comprehension 자주 사용해보기
- 의사코드(pseudocode) 연습하기
- 가위바위보 코드 완성하기
'코드스테이츠 AIB 17' 카테고리의 다른 글
Section 5 - Sprint 1. Python and Problem Solving - 4. DataStructure Essential (0) | 2023.04.21 |
---|---|
Section 5 - Sprint 1. Python and Problem Solving - 3. Python with OOP (0) | 2023.04.21 |
Section 5 - Sprint 1. Python and Problem Solving - 1. Python Programming (0) | 2023.04.18 |
Section 4 - Sprint 3. API 개발과 대시보드 (0) | 2023.04.18 |
Section 4 - Sprint 2. 데이터 수집과 NoSQL - 4. NoSQL (0) | 2023.04.17 |