TIL41. Python : Pre-Course 중간시험

ID짱재·2021년 10월 16일
0

Python

목록 보기
39/39
post-thumbnail

🌈 Django : pre-course 중간시험

🔥 is_even

🔥 calculateTotal

🔥 get_prefix

🔥 get_find

🔥 find_longest_word



1. is_even

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

✔️ 0이 짝수인지 홀수인지 헷갈려서 elif로 우선 처리하고, test에 통과하지 못하면 0인지부터 확인하는 코드로 수정하려했으나, 통과되서 제출하였다.

def is_even(num):
    if num % 2 == 0:
      return "짝수 입니다."
    elif num % 2 == 1:
      return "짝수가 아닙니다."
print(is_even(11)) # --> "짝수가 아닙니다."
print(is_even(10)) # --> "짝수 입니다."  

✔️ 만일 0을 처리해야할 경우에는 아래처럼 코드를 작성하면 될 것 같다. 하지만 끝나고 찾아본 결과 0은 짝수였다.

def is_even(num):
    if num == 0:
        return "0입니다."
    elif num % 2:
      return "짝수가 아닙니다."
    else:
      return "짝수 입니다."
print(is_even(11)) # --> "짝수가 아닙니다."
print(is_even(10)) # --> "짝수 입니다."  

✔️ js로 풀면 아래와 같다.

function isEven(num) {
  if(num % 2){
    return "짝수가 아닙니다."
  }else{
    return "짝수 입니다."
  }
}
console.log(isEven(11)) // --> "짝수가 아닙니다."
console.log(isEven(10)) // --> "짝수 입니다."


2. calculateTotal

🤔 팁(15%)과 세금(9.5%)을 제외한 식사값이 주어졌을때, 총 식사값을 반환하세요.

✔️ python으로 해결하면 아래와 같다.

def calculate_total(amount):
  amount = amount + (amount*0.095) + (amount*0.15)
  return amount
print(calculate_total(20))  --> 24.9

✔️ javascript로 해결하면 아래와 같다.

function calculateTotal(amount) {
  amount = amount + (amount*0.095) + (amount*0.15)
  return amount
}
console.log(calculateTotal(20)); // --> 24.9


3. get_prefix

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

✔️ 문자열을 split함수로 처리하면 split함수에 전달한 인자를 기준으로 나눠 list로 반환한다.
✔️ 이에 ['BTC', 'KRW']이 반환되기 때문에 index 0번인 요소를 함수에서 처리해주면 쉽게 해결할 수 있다.

def get_prefix(str):
    return str.split('-')[0]
print(get_prefix('BTC-KRW')) # --> BTC

✔️ js로 해결하면 아래와 같다.

function getPrefix(str) {
  return str.split('-')[0]
}
console.log(getPrefix('BTC-KRW')) // --> BTC


4. get_find

🤔 find 함수를 구현하세요.

✔️ 문장이 str로 주어지고, 찾을 target이 char로 전달될 때, 찾지 못하면 -1을 반환하고, 찾으면 그 index를 반환하는 문제이다.
✔️ str안에 char가 존재하지 않으면 for문으로 탐색할 필요가 없기 때문에 이를 최우선으로 확인한 뒤, 존재할 경우에만 for문이 작동되게 구현했다.

def get_find(char, str):
    if char not in str:
      return -1
    for i in range(0, len(str)):
      if str[i] == char:
        return i
output = get_find('a', 'I am a hacker')
print(output) # --> 2

✔️ js로 해결하면 아래와 같습니다.

function getFind(filter, sentence) {
  for(i = 0; i<sentence.length; i++){
    if(sentence[i] === filter){
      return i; 
    }
  }
  return -1; 
}
getFind('a', 'I am a hacker');
const output = getFind('a', 'I am a hacker')
console.log(output) // --> 2

5. find_longest_word

🤔 주어진 리스트 안에 있는 단어중 가장 긴 단어를 반환하는 함수 작성하세요.

✔️ for문으로도 해결할 수 있지만, sort 함수로 풀어보았다.
✔️ 정렬 기준을 요소의 길이로 지정하면, 길이가 짧은 순으로 정렬되기 때문에 reverse=True값을 주었다.
✔️ 더 짧게 작성하고 싶다면, reverse=True를 주지않고 return words[-1]를 반환하면된다.

def find_longest_word(words):
    words.sort(key=len, reverse=True)
    return words[0]
print(find_longest_word(["PHP", "Exercises", "Backend"])) # --> "Exercises"

✔️ js로 해결하면 아래와 같습니다.

function find_longest_word(arr) {
  let longest = arr[0]; 
  for( let i = 0; i < arr.length; i++){
    if(longest.length < arr[i].length){
      return longest = arr[i]; 
    }
  }
}
find_longest_word(["PHP", "Exercises", "Backend"]);
profile
Keep Going, Keep Coding!

1개의 댓글

comment-user-thumbnail
2023년 11월 28일

짱재님 감사링 감사감사

답글 달기