21.2.10~11
<코딩도장 심사문제 다시 풀며 확인한 것>
정말 많이 까먹었다. 다른거 한다고 감이 많이 죽은 것 같다. 다시 공부해야겠다.
- 심사문제 22.10 append와 pop 이용하기
a, b = map(int, input().split())
result = []
for i in range(a, b+1):
result.append(2**i)
result.pop(1)
result.pop(len(result)-2)
print(result)
계속 막혔던 것 : int는 iterable하지 않다고 하는데 계속 반복문을 돌리려고 했던 점.
- 심사문제 19.6
n = int(input())
for i in reversed(range(n)):
for j in range(n):
if i > j:
print(' ', end = '')
else:
print('*', end='')
for j in range(n):
if i < j:
print('*', end='')
print()
reversed가 위에 있는 이유 : 세로를 기준으로 양 옆으로 별을 그려줘야 하므로. 그래서 for j 반복문도 두 번이나 했던 것임.(양 옆)
여기서 i 즉 세로는 개행문자 역할. j가 얼만큼 갈 것인지 정해주는 기준이 됨. 그러니 i, j 크기 비교에 따라서 별줄이 길어지고 짧아지고가 결정 됨.
- 개행문자 : 새줄 문자(newline)는 텍스트의 한 줄이 끝남을 표시하는 문자 또는 문자열이다(EOL). 컴퓨터에게 줄을 바꾸라고 명령하는 문자. 옛날 프린터의 줄 바꿈 속도나 좌우로 바뀌어지는 타이밍 때문에 생긴 문자인 듯.(by 위키백과)
<기억하고 싶은 내용>
- 리스트(튜플도 가능) 표현식
>>> a = [i for i in range(10)] # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> b = list(i for i in range(10)) # 0부터 9까지 숫자를 생성하여 리스트 생성
>>> b
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> a = [i for i in range(10) if i % 2 == 0] # 0~9 숫자 중 2의 배수인 숫자(짝수)로 리스트 생성
>>> a
[0, 2, 4, 6, 8]
-
map 뜻 : 리스트 요소를 지정된 함수로 처리해주는 함수.(리스트 요소와 함수의 연결고리)
-
문자열 위치 찾기 : 있으면 인덱스, 없으면 -1을 반환해 줌 ; 특정 문자 찾기 조건식 등 응용 가능.
>>> 'apple pineapple'.find('pl')
2
>>> 'apple pineapple'.find('xy')
-1
그 외 문자열 포멧팅은 기회가 될 때마다 참조하여 익숙해지기.
- 반복문으로 딕셔너리 조작하기(키만, 값만도 출력 가능)
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> for key, value in x.items():
... print(key, value)
...
a 10
b 20
c 30
d 40
- 딕셔너리 표현식 : if 사용할 경우 값을 제거하거나 해야 할 때는 for문이 제대로 동작하지 않음.
>>> x = {'a': 10, 'b': 20, 'c': 30, 'd': 40}
>>> x = {key: value for key, value in x.items() if value != 20}
>>> x
{'a': 10, 'c': 30, 'd': 40}
- 세트 : 주로 순서 없이, 중복 없이 사용할 때 많이 사용함.(알고리즘 퀴즈에서 주로 그렇게 쓰는 걸 많이 봄)
(표현식)
>>> a = {i for i in 'apple'}
>>> a
{'l', 'p', 'e', 'a'}
- 파일 열고 닫기
파일의 내용을 전체 가져오는 것은 read
파일의 내용을 한 줄 씩 읽는 것은 readline
파일의 내용을 한 줄 씩 읽어 리스트 형태로 가져오는 것은 readlines
with open('hello.txt', 'r') as file: # hello.txt 파일을 읽기 모드(r)로 열기
line = None # 변수 line을 None으로 초기화
while line != '':
line = file.readline()
print(line.strip('\n')) # 파일에서 읽어온 문자열에서 \n 삭제하여 출력
with open('hello.txt', 'r') as file: # hello.txt 파일을 읽기 모드(r)로 열기
lines = file.readlines()
print(lines)
- 연습문제2 27.5 내 풀이
with open('words.txt', 'r') as file:
count = 0
s = file.read()
LIST = s.split('\n')
for i in LIST:
if len(i) <=10:
count += 1
print(count)
정답 풀이
words = file.readlines()
for word in words:
if len(word.strip('\n')) <= 10:
count += 1
정답은 아예 리스트로 가져와서 for문을 돌렸고 나는 전체를 가져온 다음 리스트로 만든 뒤 for 문을 돌렸다.
- 재귀 함수 양식
def hello(count):
if count == 0: # 종료 조건을 만듦. count가 0이면 다시 hello 함수를 호출하지 않고 끝냄
return
print('Hello, world!', count)
count -= 1 # count를 1 감소시킨 뒤
hello(count) # 다시 hello에 넣음
hello(5) # hello 함수 호출
- 팩토리얼 양식
def factorial(n):
if n == 1: # n이 1일 때
return 1 # 1을 반환하고 재귀호출을 끝냄
return n * factorial(n - 1) # n과 factorial 함수에 n - 1을 넣어서 반환된 값을 곱함
print(factorial(5))
실행 결과
- 연습문제 31.4 내 풀이
def is_palindrome(word):
if len(word) < 2:
return True
if word == word[::-1]:
return True
else:
return False
print(is_palindrome('hello'))
print(is_palindrome('level'))
재귀 통한 참 거짓 먼저 거른 뒤 회문 식으로 마무리
정답 풀이
if len(word) < 2:
return True
if word[0] != word[-1]:
return False
return is_palindrome(word[1:-1])
word를 인덱스 단위로 쪼개어 계속 확인해가는 재귀 풀이.
그 뒤에 내용은 추후 위코드에서 다시 멘토님들과 공부해야겠다. 일단 함수까지 정리 끝.
Author And Source
이 문제에 관하여(21.2.10~11), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@sinichy7/21.2.10저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)