코드로 우주평화

파이썬 중간시험 5문제 후기 본문

나는 이렇게 학습한다/Language

파이썬 중간시험 5문제 후기

daco2020 2021. 11. 14. 22:59

엄청 어려운 게 나오면 어쩌나 했는데, 기초 문법 위주로 나와서 다행히 수월하게 풀 수 있었다.

하필 조용한 시험 도중에 배에서 꼬르륵 소리가 나서 좀 창피했음...

오늘의 교훈 >>> 시험 날에는 반드시 밥을 먹고 올 것!


자 그럼 문제 리뷰 시작~

1번 문제

짝수인지 판별하는 함수 is_even을 작성 주세요.

def is_even(num):
# 아래 코드를 입력해주세요.
if num % 2 == 0:
a = "짝수 입니다."
else :
a = "짝수가 아닙니다."
return a

주어진 인자를 2로 나누었을 때 0이면 '짝수 입니다', 0이 아니면 '짝수가 아닙니다.'로 리턴

 

 

2번 문제

팁과 세금을 제외한 식사값이 주어졌을때, 팁과 세금이 포함된 총 식사값을 반환하는 함수를 작성하세요.

세금은 9.5% 팁은 15% 로 계산하세요.

def calculate_total(amount):
	# 아래 코드를 작성해주세요.
  tax = amount * 0.095
  tip = amount * 0.15
  return amount + tax + tip

인자로 받은 가격에 세금과 팁의 % 를 곱하여 총 식사값을 리턴

 

 

3번 문제

문자열이 주어졌을때, “-”를 기준으로 앞에 있는 문자열을 반환하세요.

def get_prefix(str):
    # 아래 코드를 작성해주세요.
  str_list = []
  str_list = str.split("-")
  return str_list[0]

받은 인자를 split함수를 이용하여 - 기준으로 쪼개고 str_list에 리스트 형태로 넣었음. 그리고 해당 리스트의 인덱스 번호를 사용해 첫 번째 항목을 리턴

일전에 동기로 부터 join함수에 대해 들은 적이 있는데 찾아보면서 split과 쌍으로 외워둔 게 도움이 되었음.

 

 

4번 문제

문자와 문자열이 주어졌을때, "get_find" 함수는 주어진 문자열에서 함께 주어진 문자가 나타나는 첫 번째 위치를 반환합니다. 만약 문자가 문자열에 존재하지 않는다면, -1 을 반환해야 합니다. find 함수를 사용하지 마세요. 

def get_find(char, str):
    # 아래 코드를 작성해주세요.
    list1 = []
    for i, s in enumerate(str):
      list1.append(s)
      if char == s :
        return i
    if char not in list1:
        return -1

우선 문자열을 쪼개 리스트에 넣어줌. 

그리고 인자로 받은 char 와 쪼갠 문자가 같으면 해당 인덱스 i를 리턴함. 

마지막으로 if를 다시 사용하여 char 가 list1 에 없으면 -1을 리턴하도록 함.

결론적으로 테스트는 통과했는데 그다지 좋은 코드로 보이진 않음. 이렇게 풀었던 이유는 최근 배웠던 enumerate 함수를 이용해보고 싶어서였는데 이 함수는 요소와 인덱스 번호를 함께 반환해주는 아주 귀여운 함수임!

 

 

5번 문제

주어진 리스트안에 있는 단어 중 가장 긴 단어를 찾을 수 있도록 함수를 완성해주세요.

def find_longest_word(words):
    # 아래 코드를 작성해주세요.
  a = 0
  for i in words:
    if a < len(i) :
      a = len(i)
      b = i
  return b

인자로 받은 문자열을 최초 0의 값을 지닌 a변수와 비교하여 더 크면 a변수에 문자열 길이를 저장.

그리고 해당 문자열은 b변수에 저장하도록 함.

이후 문자열들의 길이가 a변수보다 적으면 최종적으로 가장 긴 문자열이 들어가 있는 b변수를 리턴하도록 함.

 


 

시험 문제를 풀면서 파이썬이 재밌다는 생각이 들었다. 지금 당장은 시간이 부족하지만 앞으로 시간이 나면 알고리즘 문제에 도전해 보고 싶고, 다른 동기들이 푼 코드를 보면서 아직 배울게 많다는 생각이 드는 시간이었다.😊