9/23 오늘의 시간표
09:00 ~ 10:00 [원격] 파이썬 장고 실무 기초
10:00 ~ 11:00 [원격] 파이썬 장고 실무 기초
11:00 ~ 12:00 [원격] 파이썬 장고 실무 기초
12:00 ~ 13:00 [원격] 파이썬 장고 실무 기초
13:00 ~ 14:00 점심식사
14:00 ~ 15:00 [원격] 파이썬 장고 실무 기초
15:00 ~ 16:00 [원격] 파이썬 장고 실무 기초
16:00 ~ 17:00 [원격] 파이썬 장고 실무 기초
17:00 ~ 18:00 [테스트] 타임어택 구현 테스트
18:00 ~ 19:00 저녁식사
19:00 ~ 20:00 [원격] 파이썬 장고 실무 기초
20:00 ~ 21:00 [원격] 파이썬 장고 실무 기초
오늘도 어제와 같이 장고 원격 강의를 들으면서 보내는 날인데 중간에 타임어택 테스트가 있는 날이다.
장고 원격 강의
오늘은 장고 강의 2주차 강의를 수강했다. 2주차에서 배운 내용들을 요약하자면
이정도가 되겠다.
좀 더 많은 내용을 작성하고 싶었지만 강의의 주된 내용이 이론적인 부분은 적고 실제 회원가입&로그인 사이트를 만드는 과정을 보고 따라하는 것이 대부분이었기 때문에 내용요약은 이정도로 마쳐두고 사이트를 만든 경험만 내 머리속에 남겨두도록 하겠다.
타임어택 구현 테스트
지금까지 해본 적 없는 새로운 프로그램이다. 내용은 특별한 것은 없고 튜터님이 주신 문제를 시간안에 풀어서 제출하면 된다. 문제의 난이도도 지금까지 배운 파이썬 범위 내에서 나오기 때문에 크게 어렵지는 않았지만 시간의 제약이 있다보니 쉽게 되지는 않았다.
a = 10
def test1():
b = 20
def test2():
print(a)
print(b)
test1()
test2()
# 실행이 잘 될까요?
# 실행이 되지 않는다면 어떤 에러가 발생할까요?
A. a는 코드 전체에 적용되는 전역변수이고 b는 test1함수 내에서만 적용되는 지역변수이기 때문에 test2 함수에서 출력할 b의 값이 지정되지 않기 때문에 코드실행에 오류가 발생한다.
A.
mutable
- list
- dictionary
immutable
- int
- float
- str
- tuple
numbers
변수에 할당해주세요even_numbers
변수에 할당해주세요some_numbers
에 할당해주세요def get_even_numbers(numbers):
result = []
# some code
return result
def get_some_numbers(numbers):
result = []
# some code
return result
def main():
numbers = [] # 1 ~ 10000
even_numbers = get_even_numbers(numbers)
some_numbers = get_some_numbers(numbers)
print(even_numbers) # [2, 4, 6, ...]
print(some_numbers) # [30, 60, 90, 120, 180, ...]
main()
A.
첫번째 방법은 시간이 너무 오래걸리므로 제외하고 두번째 세번째 방법을 사용하는 선택지가 있다.
# case 2
numbers = [] # 1 ~ 10000
for i in range(1, 10001):
numbers.append(i)
# case 3
numbers = list(range(1, 10001))
# case 4
numbers = [x for x in range(1, 101)]
나는 여기서 3번째 방법을 사용하여 문제를 풀었다.
# case 1
result = [x for x in numbers if x%2 == 0]
# case 2
result = list(filter(lambda x: x%2 == 0, numbers))
return result
# 3의 배수이자 15의 배수가 아닌 숫자 골라내기
# 결과물에 10 곱해주기
# case 1
result = list(filter(lambda x: x%3 == 0 and x%15 != 0, numbers))
result = list(map(lambda x: x*10, result))
# case 2
result = [x*10 for x in numbers if x%3 == 0 and x%15 != 0]
return result
이렇게 해서 최종적으로 나온 답안이다.
def get_even_numbers(numbers):
result = list(filter(lambda x: x%2 == 0, numbers))
return result
def get_some_numbers(numbers):
result = list(filter(lambda x: x%3 == 0 and x%15 !=0, numbers))
result = list(map(lambda x: x*10, result))
return result
def main():
numbers = list(map(int, range(1, 10001))) # 1 ~ 10000
even_numbers = get_even_numbers(numbers)
some_numbers = get_some_numbers(numbers)
print(even_numbers) # [2, 4, 6, ...]
print(some_numbers) # [30, 60, 90, 120, 180, ...]
main()
from pprint import pprint
users = [
{"name": "Ronald", "age": 30, "math_score": 93, "science_score": 65, "english_score": 93, "social_score": 92},
{"name": "Amelia", "age": 24, "math_score": 88, "science_score": 52, "english_score": 78, "social_score": 91},
{"name": "Nathaniel", "age": 28, "math_score": 48, "science_score": 40, "english_score": 49, "social_score": 91},
{"name": "Sally", "age": 29, "math_score": 100, "science_score": 69, "english_score": 67, "social_score": 82},
{"name": "Alexander", "age": 30, "math_score": 69, "science_score": 52, "english_score": 98, "social_score": 44},
{"name": "Madge", "age": 22, "math_score": 52, "science_score": 63, "english_score": 54, "social_score": 47},
{"name": "Trevor", "age": 23, "math_score": 89, "science_score": 88, "english_score": 69, "social_score": 93},
{"name": "Andre", "age": 23, "math_score": 50, "science_score": 56, "english_score": 99, "social_score": 54},
{"name": "Rodney", "age": 16, "math_score": 66, "science_score": 55, "english_score": 58, "social_score": 43},
{"name": "Raymond", "age": 26, "math_score": 49, "science_score": 55, "english_score": 95, "social_score": 82},
{"name": "Scott", "age": 15, "math_score": 85, "science_score": 92, "english_score": 56, "social_score": 85},
{"name": "Jeanette", "age": 28, "math_score": 48, "science_score": 65, "english_score": 77, "social_score": 94},
{"name": "Sallie", "age": 25, "math_score": 42, "science_score": 72, "english_score": 95, "social_score": 44},
{"name": "Richard", "age": 21, "math_score": 71, "science_score": 95, "english_score": 61, "social_score": 59},
{"name": "Callie", "age": 15, "math_score": 98, "science_score": 50, "english_score": 100, "social_score": 74},
]
# some code
pprint(users, width=300, sort_dicts=False)
"""
[{'name': 'Ronald', 'age': 30, 'math_score': 93, 'science_score': 65, 'english_score': 93, 'social_score': 92},
{'name': 'Trevor', 'age': 23, 'math_score': 89, 'science_score': 88, 'english_score': 69, 'social_score': 93},
{'name': 'Callie', 'age': 15, 'math_score': 98, 'science_score': 50, 'english_score': 100, 'social_score': 74},
{'name': 'Sally', 'age': 29, 'math_score': 100, 'science_score': 69, 'english_score': 67, 'social_score': 82},
{'name': 'Scott', 'age': 15, 'math_score': 85, 'science_score': 92, 'english_score': 56, 'social_score': 85},
{'name': 'Amelia', 'age': 24, 'math_score': 88, 'science_score': 52, 'english_score': 78, 'social_score': 91},
{'name': 'Richard', 'age': 21, 'math_score': 71, 'science_score': 95, 'english_score': 61, 'social_score': 59},
{'name': 'Jeanette', 'age': 28, 'math_score': 48, 'science_score': 65, 'english_score': 77, 'social_score': 94},
{'name': 'Raymond', 'age': 26, 'math_score': 49, 'science_score': 55, 'english_score': 95, 'social_score': 82},
{'name': 'Alexander', 'age': 30, 'math_score': 69, 'science_score': 52, 'english_score': 98, 'social_score': 44},
{'name': 'Andre', 'age': 23, 'math_score': 50, 'science_score': 56, 'english_score': 99, 'social_score': 54},
{'name': 'Sallie', 'age': 25, 'math_score': 42, 'science_score': 72, 'english_score': 95, 'social_score': 44},
{'name': 'Nathaniel', 'age': 28, 'math_score': 48, 'science_score': 40, 'english_score': 49, 'social_score': 91},
{'name': 'Rodney', 'age': 16, 'math_score': 66, 'science_score': 55, 'english_score': 58, 'social_score': 43},
{'name': 'Madge', 'age': 22, 'math_score': 52, 'science_score': 63, 'english_score': 54, 'social_score': 47}]
"""
A.
users.sort(key=lambda x: sum([x["math_score"], x["science_score"], x["english_score"], x["social_score"]]), reverse=True)
람다함수를 사용해 dictionary의 키 값만 계산해서 조건에 맞게 정렬한 방법이다.
이렇게 4문제를 풀어봤는데 사실 나는 시간안에 다 풀지 못했다. 시간이 더 있었다면 풀 수는 있었겠지만 직접 코드를 입력해보며 실행이 되는지 안되는지 확인해가며 풀려고하니 생각보다 시간이 너무 많이 걸렸다.
오늘 하루를 마치며
새롭게 시작한 장고도 쉽지는 않았지만 타임어택 구현 테스트가 생각보다 힘들었다. 난이도가 어려운 것은 결코 아니지만 아직 코드를 짜는게 미숙한 것이 느껴지는 것이 마치 요리에 들어가는 재료는 아는데 요리법은 모르는 요리초보의 모습 같다는 생각이 들고 있다. 이럴때 요리하는 법은 레시피를 찾아보거나 요리를 할 줄 아는 사람에게 조언을 받거나 직접 시행착오를 겪으며 깨닫는 방법이 있는데 여기서 요리를 코딩에 적용한다면 정확히 내 상황이 된다. 결론은 구글링을 해보면서 최대한 직접 해보고 안되면 튜터님께 질문을 해서 푸는 것밖에 없다는 것이다.