python 중간 테스트 리뷰

지원석·2021년 12월 12일
0

이번엔 위코드 2주차의 마지막 날에 본 파이썬 중간테스트에 대한 리뷰를 해보도록 하겠다. 총 5문제 중 다소 생각을 하게 만든 문제들에 대해서 다뤄보자!

get_prefix 문제

"get_prefix" 함수를 작성하세요.
문자열이 주어졌을때, “-”를 기준으로 앞에 있는 문자열을 반환하세요.
print(get_prefix('BTC-KRW')) # --> BTC

이 문제를 접하고 내가 떠올린 건 어떠한 기준으로 나누는 split을 사용하자 였고, 아래와 같이 코드를 짰다.

def get_prefix(str):
  new = str.split('-')[0]
  return new

이 방식 외에 옆 동기를 보니, find를 사용할 수도 있었다!
find() 함수
find('찾을 문자') => 변수에 위차한 문자열 괄호 안에 넣은 특정 문자가 처음 위치한 자리의 값을 찾을 수 있다. 문자열의 위치는 숫자로 출력되고, 0부터 시작한다.

get_find 문제

"get_find" 함수를 작성하세요.
문자와 문자열이 주어졌을때, "get_find" 함수는 주어진 문자열에서 함께 주어진 문자가 나타나는 첫번째 위치를 반환합니다.

이 문제는, input으로 받는 str에 대해 len()으로 길이를 뽑아내고, 그 길이를 range()로 받은 후 for loop을 돌린다는 생각을 해야하는 것 같다!

def get_find(char, str):
  if char not in str:
    return -1
  else:
    for i in range(len(str)):
      if char == str[i]:
        return i

find_longest_word 문제

주어진 리스트안에 있는 단어중 가장 긴 단어를 찾을수 있도록 함수를 완성해주세요.
print(find_longest_word(["PHP", "Exercises", "Backend"]))
#--> "Exercises"

이 문제가 나에게 좀 어려웠던 건 어떻게 비교를 해줄까였는데, 나는 new라는 변수에 input으로 받은 리스트나 튜플의 첫 단어를 할당해주면서 시작을 했다!

def find_longest_word(words):
  new = words[0]
  for word in words:
    if len(new) < len(word):
      new = word
    # else:
    #   new = new
  return new

이렇게 코드를 짰고, 결과는 맞았으나 충격적인 사실을 접했다. 옆 자리에 앉은 동기와 이야기를 나눠보니 동기는 sort()라는 방법을 사용했다!
sort()를 사용하면 리스트나 튜플의 객체들이 기준에 맞게 오름차순 또는 내림차순으로 정리가 된다는 것이다. 그렇게 되면 짧은 단어부터 sort를 하게되면, 가장 마지막에 있는 긴 단어 즉 sorted_words[-1]을 뽑아주면 그냥 두줄로 코드를 끝낼 수 있다는 것!!!!

새로운 메서드를 알게해 준 옆자리 동기에게 감사함을 전하며 마친다:)

0개의 댓글