▶ 문제1
- cars = ['audi', 'bmw', 'subaru', 'kia', 'toyota', 'hyundai']
- 새로운 리스트에 kia, hyundai를 대문자로 추가하기
cars = ['audi', 'bmw', 'subaru', 'kia', 'toyota', 'hyundai']
# 새로운 리스트 생성
new_list =[]
# i에 0부터 6(cars리스트의 길이)까지의 숫자를 하나씩 할당하며 반복문 실행
for i in range((len(cars))):
# cars 안의 요소 값이 kia 혹은 hyundai 일 경우
if cars[i] == 'kia' or cars[i] == 'hyundai':
# cars 리스트의 i번째 요소를 대문자로 변경해서 new_list에 추가
new_list.append(cars[i].upper())
print(new_list) # ['KIA', 'HYUNDAI']
처음에 오답했던 내용 적어놓기
if문은 조건이 true일 경우 실행된다.
그래서 다음과 같이 사용할 경우, if 'hyundai'는 항상 True이기 때문에 모든 요소에서 if문이 실행되어 버린다ㅜㅜ
if cars[i] == 'kia' or 'hyundai': # 항상 True
# ['AUDI', 'BMW', 'SUBARU', 'KIA', 'TOYOTA', 'HYUNDAI']
불연산자로 확인해보기!
print(bool(1)) # True # 숫자는 다 True
print(bool(-1)) # True # 숫자는 다 True
print(bool(0)) # False # 0만 False
print(bool('아무말')) # True # 글자는 다 True
print(bool(' ')) # True # 공백도 True
print(bool('')) # False # 빈문자열 False
print(bool([1,2,3])) # True # 내용o리스트 True
print(bool([])) # False # 빈 리스트 False
print(bool('None')) # True # None이라는 문자 True
print(bool(None)) # False # None(없음) False
신기한 건 문자열에서 공백도 True로 인식한다는 건데, 컴퓨터 아스키코드로 보면 스페이스(공백)도 숫자가 매겨져 있기 때문에 문자와 같이 인식한다. 오...
두번째 오답 내용
for문으로 반복을 돌리려면 in 뒤에 '반복가능한' 객체가 와야한다.
반복 가능하려면 __iter__ 라는 매직메서드를 갖고 있어야 함.
__iter__ : iterable(반복가능한) 객체의 메서드
그리고 객체가 iter 라는 매직메서드를 갖고 있는지 알려주는 함수도 있다.
dir(객체) : directory 의 약자로, 객체가 갖고있는 모든 속성(attribute)과 메서드(method)를 리스트 형태로 반환한다.
print(dir(int)) # '__iter__' 없음 # 숫자는 반복할 수 X
print(dir(str)) # '__iter__' 있음 # 문자는 반복할 수 O
print(dir(len)) # '__iter__' 없음 # 길이는 반복할 수 X
print(dir(range)) # '__iter__' 있음 # 범위는 반복할 수 O
숫자와 길이는 iter 메서드가 없고, 문자와 범위는 iter 메서드가 있다.
따라서 str 형식과 range 형식은 for문을 통해 반복할 수 있다!
▶ 문제2
- 25 ~ -15까지 감소하는 결과 출력하기
result = [] # 비어있는 result 리스트 생성
for i in range(25, -16, -2): # 25부터 -16(미포함)까지 -2씩 반복해서 숫자생성
result.append(i) # 생성된 요소를 result 리스트에 추가해주기
print(result) # result 출력
# [25, 23, 21, 19, 17, 15, 13, 11, 9, 7, 5, 3, 1, -1, -3, -5, -7, -9, -11, -13, -15]
오답했던거1
for i in range(25, -15, -2)
# -15 가 출력 안됨..
range(start, stop, step) 함수는 start 이상부터 stop 미만까지 step 칸씩 점프하며 범위를 지정해준다. 주의할 점은 stop이 not included 이기 때문에 -15까지 출력하고 싶으면 -16 범위를 지정해줘야한다.
오답했던거2
print(result.append(i)) # None
append는 함수다. print는 '값'을 출력하는거지 '기능'을 출력하는 게 아니기 때문에
이런 이상한 코드는 없다... ㅠ 글구나
'python' 카테고리의 다른 글
[Python 미니세션] 함수 *Asterisk (0) | 2024.07.12 |
---|---|
[Python 미니세션] 딕셔너리 관련 함수 (0) | 2024.07.11 |
[Python 기초] f-string (0) | 2024.07.09 |
[Python 기초] 집합 set (0) | 2024.07.09 |
[Python 기초] 튜플 tuple (0) | 2024.07.09 |