파이썬 300제 151~160 (반복문)

2024. 5. 30. 07:30Flutter/Flutter Programming

반응형

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

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

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

-20
-3

-> 리스트에 저장된 모든 값에 접근해서 음수 여부를 판단해야 합니다. 라인 3을 제외하면 리스트에 저장된 모든 값을 출력하는 코드입니다. 라인 3의 분기문의 사용으로 모든 값을 출력하는 것이 아니라 조건이 참인 경우에만 if문의 들여쓰기된 코드가 실행됩니다.

1: 리스트 = [3, -20, -3, 44]
2: for 변수 in 리스트:
3:   if 변수 < 0:
4:     print(변수)

인터프리터가 실행하는 순서를 정리해보면 다음과 같습니다. (변수 3 바인딩 - 분기문 비교:거짓) (변수 -20 바인딩 - 분기문 비교:참 - 코드 실행) (변수 -3 바인딩 - 분기문 비교:참 - 코드 실행) (변수 44 바인딩 - 분기문 비교:거짓)

 

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

리스트 = [3, 100, 23, 44]
3

-> 3의 배수일 경우에만 값을 출력합니다. 3의 배수는 3으로 나눈 나머지가 0이면 3의 배수입니다. `변수 % 3`은 변수를 3으로 나눈 나머지를 의미합니다. 예를들어 `10 % 3`은 10을 3으로 나눈 나머지로 1을 반환합니다.

리스트 = [3, 100, 23, 44]
for 변수 in 리스트:
  if 변수 % 3 == 0:
    print(변수)

 

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

리스트 = [13, 21, 12, 14, 30, 18]
12
18

-> 하나 이상의 조건을 비교할 때는 논리 연산자를 사용해야겠죠? 두 조건이 모두 참일 때만 실행돼야 하므로 and 연산자를 사용합니다. 또한 코드의 가독성 향상을 위해 두 조건을 괄호로 구분했습니다. 괄호가 없어도 코드는 같은 동작을 합니다.

리스트 = [13, 21, 12, 14, 30, 18]
for 변수 in 리스트:
  if (변수 < 20) and (변수 % 3 == 0):
    print(변수)

 

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

리스트 = ["I", "study", "python", "language", "!"]
study
python
language

-> 모든 문자열 중에서 문자열의 길이가 3이상인 문자열만 출력합니다. 문자열의 길이를 계산하는 len() 함수와 분기문을 사용합니다.

리스트 = ["I", "study", "python", "language", "!"]
for 변수 in 리스트:
  if len(변수) >= 3:
    print(변수)

 

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

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

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

>> 변수 = "A"
>> 변수.isupper()
True
>> 변수 = "a"
>> 변수.isupper()
False

->

리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if 변수.isupper():
    print(변수)

 

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

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

-> 비교 연산자를 사용해서 다음과 같이 표현할 수 있습니다.

리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if 변수.isupper() == False:
    print(변수)
리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if 변수.isupper() != True:
    print(변수)

논리 연산자 not을 사용할 수도 있습니다.

리스트 = ["A", "b", "c", "D"]
for 변수 in 리스트:
  if not 변수.isupper():
    print(변수)

 

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

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

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

>> 변수 = "a"
>> a.upper()
A
>> 변수 = "abc"
>> 변수.upper()
ABC

-> 지금까지 배웠던 내용을 모두 응용해야 하는 문제입니다. 첫 번째 단어만 대문자로 변경해야하기 때문에 아래의 순서로 처리해야 합니다. 1) 인덱싱으로 첫번째 문자를 가져온다. 2) upper() 함수로 대문자로 변경한다. 3) 변경한 대문자와 나머지 문자를 이어붙인다. 정리한 내용을 코드로 작성하면 다음과 같습니다.

리스트 = ['dog', 'cat', 'parrot']
for 변수 in 리스트:
  첫글자 = 변수[0]              # 1)
  대문자 = 첫글자.upper()     # 2)
  print(대문자 + 변수[1:])      # 3)

간단하기 때문에 한줄에 코드를 작성해도 좋습니다.

for 변수 in 리스트:
  print(변수[0].upper() + 변수[1:])

 

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

리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
hello
ex01
intro

-> split() 메서드는 문자열을 입력된 구분자로 분할해서 리스트로 반환합니다. 다음 예제 코드의 결과를 예상해봅시다.

변수 = "abcdef"
print(변수.split("c"))

입력된 구분자 ("c")로 문자열을 분할해서 "ab"와 "def"를 리스트에 저장합니다.

['ab', 'def']

split() 메서드를 사용해서 마침표를 구분자 (".")로 문자열을 분할합니다. 그리고 0번 인덱스에 들어있는 파일 이름만 화면에 출력합니다.

리스트 = ['hello.py', 'ex01.py', 'intro.hwp']
for 변수 in 리스트:
  split = 변수.split(".")
  print(split[0])

 

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

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
intra.h
define.h

-> split() 메서드로 문자열을 분할하고 확장자가 "h"인지 분기문으로 비교합니다. 확장자가 "h"라면 파일 이름을 출력합니다.

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
for 변수 in 리스트:
  split = 변수.split(".")
  if split[1] == "h":
    print(변수)

 

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

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
intra.h
intra.c
define.h

-> 논리 연산자 or을 사용해서 두 개의 확장자를 비교합니다.

리스트 = ['intra.h', 'intra.c', 'define.h', 'run.py']
for 변수 in 리스트:
  split = 변수.split(".")
  if (split[1] == "h") or (split[1] == "c"):
    print(변수)
반응형