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

[독학 파이썬] 초보자를 위한 파이썬 300제 풀이(151~160)_12.20

Klay_J 2022. 12. 20. 15:01

안녕하세요. Harry입니다.

 

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

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

 

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

https://wikidocs.net/book/922

[학습목표]

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

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

 

151 ~ 160

151

리스트에는 네 개의 정수가 저장돼 있다. 

리스트 = [3, -20, -3, 44]

for문을 사용해서 리스트의 음수를 출력하라.

-요구역량 : for문과 if문을 활용하여 수의 크기 비교 후 조건에 따라 출력할 수 있는가?

참 어렵게도 풀었습니다..그냥 리스트 요소가 0보다 작은 것만 고르면 되는데...^^

맨처음에는 i[0]에 "-"가 포함된 애들만 따로 빼려고 했으나, 마이너스 표시가 문자열 취급을 안받더군요.

이후 어떻게 음수 표현을 할까하다가 -1을 곱하는 걸로 코딩했는데, 더 간단한 방법을 놓치고 있었습니다.

-20
-3
 정답확인
리스트 = [3, -20, -3, 44]
for i in 리스트:
    if i*-1 >0:
        print(i)
    else:
        pass

#답지
리스트 = [3, -20, -3, 44]
for 변수 in 리스트:
    if 변수 < 0:
    print(변수)

152

for문을 사용해서 3의 배수만을 출력하라.

- 요구역량 : for문과 if문을 활용하여 특정 요소 중 일부만 출력할 수 있는가?

리스트 = [3, 100, 23, 44]
3
 정답확인
리스트 = [3, 100, 23, 44]
for i in 리스트:
    if i%3 == 0:
        print(i)
    else:
        pass

153

리스트에서 20 보다 작은 3의 배수를 출력하라

- 요구역량 : 논리 연산자, for문,if문을 활용하여 '여러' 조건을 충족하는 값을 출력할 수 있는가?

답은 같지만 또 제맘대로 풀었습니다,,ㅋㅋ 답지에서는 and 조건을 활용하여 두 조건(20 미만, 3의 배수)이 동시에 충족되는 요소를 고르도록 했습니다. 저의 경우는 if-elif를 통해 20 이상은 pass로 날리고, 그 안에서 3의 배수를 찾았는데, and 조건문을 활용할 수 있도록 연습해야겠습니다.(선택할 수 있는 가지수가 많다는 것은 더 유연한 코딩을 할 수 있음을 의미하니깐요)

리스트 = [13, 21, 12, 14, 30, 18]
12
18
 정답확인
리스트 = [13, 21, 12, 14, 30, 18]
for i in 리스트:
    if i > 20:
        pass
    elif i%3 == 0:
        print(i)
#답지
리스트 = [13, 21, 12, 14, 30, 18]
for 변수 in 리스트:
  if (변수 < 20) and (변수 % 3 == 0):
    print(변수)

154

리스트에서 세 글자 이상의 문자를 화면에 출력하라

- 요구역량 : for문, if문, len 함수를 활용하여 특정 조건에 일치하는 요소만 출력할 수 있는가?

리스트 = ["I", "study", "python", "language", "!"]
study
python
language
 정답확인
리스트 = ["I", "study", "python", "language", "!"]
for i in 리스트:
    if len(i)>= 3:
        print(i)

155

리스트에서 대문자만 화면에 출력하라. 

- 요구역량 : isupper, for문, if문을 활용하여 특정 조건에 맞는 요소만 출력할 수 있는가?

리스트 = ["A", "b", "c", "D"]
A
D

(참고) isupper() 메서드는 대문자 여부를 판별합니다.

>> 변수 = "A"
>> 변수.isupper()
True
>> 변수 = "a"
>> 변수.isupper()
False
 정답확인
리스트 = ["A", "b", "c", "D"]
for i in 리스트:
    if i.isupper():
        True
        print(i)
 

 

156

리스트에서 소문자만 화면에 출력하라. 

- 요구역량 : isupper, for문, if문을 활용하여 특정 조건에 맞는 요소만 출력할 수 있는가?

답지에서는 isupper == false 를 사용했는데, 저는 islower를 활용하여 작성했습니다.

리스트 = ["A", "b", "c", "D"]
b
c
 정답확인
리스트 = ["A", "b", "c", "D"]
for i in 리스트:
    if i.islower():
        True
        print(i)
        
#답지
리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if 변수.isupper() == False:
    print(변수)

157

이름의 첫 글자를 대문자로 변경해서 출력하라.

- 요구역량 : 요소인 문자열에서 각 알파벳을 구분하여 출력할 수 있는가?

답지가 의도한대로 인덱싱&슬라이싱을 활용하여 출력했습니다.

리스트 = ['dog', 'cat', 'parrot']
Dog
Cat
Parrot

(참고) upper() 메서드는 문자열을 대문자로 변경합니다.

>> 변수 = "a"
>> a.upper()
A
>> 변수 = "abc"
>> 변수.upper()
ABC
 정답확인
리스트 = ['dog', 'cat', 'parrot']
for i in 리스트:
    i = i.upper()[0]+i[1:]
    print(i)
    
#답지
for 변수 in 리스트:
  print(변수[0].upper() + 변수[1:])

158

파일 이름이 저장된 리스트에서 확장자를 제거하고 파일 이름만 화면에 출력하라. (힌트: split() 메서드)

- 요구역량 : 특정 문자를 기준으로 요소를 구분 후 구분한 요소 중 원하는 요소만 모아 출력할 수 있는가?

split 메서드 이용하라는 힌트가 없었다면 또 슬라이싱해서 할 뻔 했다. 역시 아직 다양한 메소드를 적시에 떠올리는 능력이 부족하다고 생각합니다.

리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
hello
ex01
intro
 정답확인
리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
for i in 리스트:
    i = i.split(".")[0]
    print(i)

159

파일 이름이 저장된 리스트에서 확장자가 .h인 파일 이름을 출력하라.

- 요구역량 : 특정 문자가 포함된 요소만 출력할 수 있는가?

먼저 split메서드를 활용하여 .(점)을 기준으로 구분, 이후 1번째(0번째 아님) 요소가 h인 것만 골라서 출력했습니다.

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
intra.h
define.h
 정답확인
리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
for i in 리스트:
    a = i.split(".")[1]
    if a == 'h':
        print(i)

160

파일 이름이 저장된 리스트에서 확장자가 .h나 .c인 파일을 화면에 출력하라.

- 요구역량 : 특정 문자가 포함된 요소를 출력할 수 있는가?

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
intra.h
intra.c
define.h
 정답확인
리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
for i in 리스트:
    a = i.split(".")[1]
    if a == "h" or a == "c":
        print(i)

감사합니다.