Coding Test/초보자를 위한 파이썬 300제

[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(221~230)_12.21

Klay_J 2022. 12. 21. 17:36

안녕하세요. Harry입니다.

 

현재 풀이중인 초보자를 위한 파이썬 300제 풀이를 진행하면서 나름대로 파악했던 문제 출제 의도와 풀이를 작성했습니다.

모든 풀이는 직접 Pycharm을 통해 에러없이 출력됨을 확인 후 작성했습니다.

 

초보자를 위한 파이썬 300제 풀이는 Wikidocs에 무료로 배포된 전자책을 활용했습니다/

https://wikidocs.net/book/922

[학습목표]

1. 각 문제별 요구하는 역량(출제의도)이 무엇인지 파악할 수 있다.

2. 각 문제별 요구하는 기술 및 기능을 활용하여 문제를 해결할 수 있다.

 

221 ~ 230

221

입력된 문자열을 역순으로 출력하는 print_reverse 함수를 정의하라.

- 요구역량 : 특정 기능을 보유한 함수를 정의할 수 있는가?

print_reverse("python")
nohtyp
 정답확인
def print_reverse(string):
    a = string[::-1]
    print(a)
print_reverse('python')

222

성적 리스트를 입력 받아 평균을 출력하는 print_score 함수를 정의하라.

- 요구역량 : 리스트를 매개변수로 입력받을 때, 리스트 요소의 합,요소 개수를 이용한 연산값을 출력하는 함수를 정의할 수 있는가?

생각보다 오래 걸렸습니다,,어떻게 풀어야겠다는 생각이 나는데, sum(List)가 생각이 안나서 계속 헤맸네요,,

print_score ([1, 2, 3])
2.0
 정답확인
def print_score(list):
    for i in list:
        a = sum(list)/len(list)
    print(a)

223

하나의 리스트를 입력받아 짝수만 화면에 출력하는 print_even 함수를 정의하라.

- 요구역량 : 함수 정의 시 for문 및 if문을 활용하여 특정조건에 맞는 리스트 요소만 출력할 수 있는가?

print_even ([1, 3, 2, 10, 12, 11, 15])
2
10
12
 정답확인
def print_even(list):
    for i in list:
        if i%2 == 0:
            print(i)

224

하나의 딕셔너리를 입력받아 딕셔너리의 key 값을 화면에 출력하는 print_keys 함수를 정의하라.

- 함수에서 for문을 활용하여 딕셔너리 키값만 따로 추출하는 함수를 정의할 수 있는가?

print(dic.keys()) 출력하도록 했더니 답지처럼 출력되진 않았다,, 아직 딕셔너리쪽이 어색한 합니다.

dic.keys() 자체를 for문에 활용하는 것을 기억할 !

print_keys ({"이름":"김말똥", "나이":30, "성별":0})
이름
나이
성별
 정답확인
def print_keys(dic):
    for keys in dic.keys():
        print(keys)

225

my_dict에는 날짜를 키값으로 OHLC가 리스트로 저장돼 있다. 

- 요구역량 : 딕셔너리가 포함된 함수에서 특정 key값을 입력받으면 대응되는 value를 출력하는 함수를 정의할 수 있는가?

어떻게든 풀긴 푸는데,, 더 간편한 방법으로  풀지는 못하고 있습니다.딕셔너리[key값] => value값이 나온다는 걸 숙지할 필요가 있습니다.

my_dict = {"10/26" : [100, 130, 100, 100],
           "10/27" : [10, 12, 10, 11]}

my_dict와 날짜 키값을 입력받아 OHLC 리스트를 출력하는 print_value_by_key 함수를 정의하라.

print_value_by_key  (my_dict, "10/26")
[100, 130, 100, 100]
 정답확인
my_dict = {"10/26" : [100, 130, 100, 100],
           "10/27" : [10, 12, 10, 11]}
def print_value_by_key(my_dict,a):
    for i in my_dict.keys():
        if i == a:
            print(my_dict[a])
            
#답지
def print_value_by_key (my_dict, key) :
    print(my_dict[key])
 

226

입력 문자열을 한 줄에 다섯글자씩 출력하는 print_5xn(string) 함수를 작성하라.

- 요구역량 : 문자열을 특정 개수로 구분 , 각각 다른 줄에 위치하도록 출력하는 함수를 정의할 있는가?

이걸,,어떻게 생각해내지,,? 가장 당황스러운 문제입니다..요구는 간단하지만 구현하는 식은 생각할 많아보이는 군요,,

일단 range 범위도 생각해야하고, 문자열을 슬라이싱하는 인덱스 값도 계산해야합니다..

print_5xn("아이엠어보이유알어걸")
아이엠어보
이유알어걸
 정답확인
#답지
def print_5xn(line):
    chunk_num = int(len(line) / 5)
    for x in range(chunk_num + 1) :
        print(line[x * 5: x * 5 + 5])
print_5xn("아이엠어보이유알어걸")

227

문자열과 한줄에 출력될 글자 수를 입력을 받아 한 줄에 입력된 글자 수만큼 출력하는 print_mxn(string) 함수를 작성하라.

- 요구역량 : 문자열을 특정 개수로 구분 , 각각 다른 줄에 위치하도록 출력하는 함수를 정의할  있는가?

printmxn("아이엠어보이유알어걸", 3)
아이엠
어보이
유알어
걸
 정답확인
#답지
def print_mxn(line, num):
    chunk_num = int(len(line) / num)
    for x in range(chunk_num + 1) :
        print(line[x * num: x * num + num])

228

연봉을 입력받아 월급을 계산하는 calc_monthly_salary(annual_salary) 함수를 정의하라. 회사는 연봉을 12개월로 나누어 분할 지급하며, 이 때 1원 미만은 버림한다.

- 요구역량 : 함수의 return 값을 정의하여 함수를 호출할 수 있는가?

답지에서는 int 값을 씌워서 출력했네요. 1 미만은 버림한다를 정수형으로 변경하여 처리하는 합니다.

저의 답의 경우는 실수형으로 나오기 때문에, 저도 int 씌워줬구요.

return 쓰지않은 차이점이네요.

calc_monthly_salary(12000000)
1000000
 정답확인
def calc_monthly_salary(annual_pay) :
    print(int(annual_pay/12))
    
#답지
def calc_monthly_salary(annual_pay) :
    monthly_pay = int(annual_pay / 12)
    return monthly_pay

229

아래 코드의 실행 결과를 예측하라.

- 요구역량 : 함수의 매개변수가 바인딩된 명령어를 이해하고 있는가?

def my_print (a, b) :
    print("왼쪽:", a)
    print("오른쪽:", b)

my_print(a=100, b=200)
 정답확인
왼쪽: 100
오른쪽 : 200

매개변수를 바인딩해도 동일하게 동작.

230

아래 코드의 실행 결과를 예측하라.

- 요구역량 : 함수의 매개변수가 바인딩된 명령어를 이해하고 있는가?

def my_print (a, b) :
    print("왼쪽:", a)
    print("오른쪽:", b)

my_print(b=100, a=200)
 정답확인
왼쪽: 100
오른쪽 : 200
바인딩 순서는 상관없음.

감사합니다.