데이터 스쿨 파이썬 과정이 끝났다.
그런 기념으로(😉) 올해 봄에 샀던 파이썬 책을 사라락 읽어보았다.
우선은 함수 앞까지.
가우스처럼 창조적인 발상이 가능하다면 프로그램을 개발하는데 많은 도움이 되겠지만, 현재 프로그램 개발자들도 모두 이 정도의 재능을 갖고 있는 것은 아닙니다. 일반적인 프로그램 개발 업무는 수학자와 과학자들이 하는 일보다는 수학과 과학을 활용하는 일에 더 가깝기 때문입니다.
결국 보통 개발을 할 때는 ‘창조적 발상 몇 개를 해내는 것‘보다는 ’수많은 사람들이 이미 만든 수많은 창조적 방상을 다양하게 접하고 이해해서 조합하는 것‘이 더 중요합니다.
< 혼자 공부하는 파이썬 p.271 >
100
10 + 20 + 30
“ABC"
100
"ABC"
text = """안녕하세요.
반갑습니다."""
print(text)
>>>
안녕하세요.
반갑습니다.
# 줄바꿈이 들어가지 않게 하려면 : \ 기호 사용
text = """안녕하세요. \
반갑습니다."""
print(text)
>>>
안녕하세요. 반갑습니다.
문자열 + 문자열
print('오늘은 ' + '토요일입니다.')
>>>
오늘은 토요일입니다.
문자열 반복 연산자 *
print("안녕" * 3)
>>>
안녕안녕안녕
문자 선택 연산자(인덱싱) : [ ]
문자열의 특정 위치에 있는 문자를 참조하는 것
text = "가나다라마바사아자차카타파하"
print(text[0])
print(text[5])
>>>
가
바
text = ["ABC", "DEF", "GHI"]
print(text[0][1]) # B
print(text[2][0]) # G
문자열 범위 선택 연산자(슬라이싱) : [ : ]
문자열의 일부를 추출하는 것
print(text[:5])
print(text[3:7])
>>>
가나다라마
라마바사
정수형 : 소수점이 없는 숫자
실수형 : 소수점이 있는 숫자
stringA = '100'
stringB = '100.0'
print(int(stringA), type(int(stringA)))
print(float(stringB), type(float(stringB)))
>>>
100 <class 'int'>
100.0 <class 'float'>
숫자가 아닌 것을 숫자로 변환하려고 하거나, 소수점이 있는 숫자 형식의 문자열을 int()로 캐스팅하면 ValueError 발생
✅ VScode에서 자료형 뒤에 . 찍어보면 나오는 자동 완성 기능 참고
stringA = '100'
stringB = '100.0'
print(stringA in stringB)
>>>
True
# 문자열.join(문자열로 구성된 리스트)
print("🍊".join(["1", "2", "3"]))
>>>
1🍊2🍊3
string = '{}'.format(10)
print(string, type(string))
print('{:5d}'.format(50)) # 특정 칸에 출력
print('{:05d}'.format(50)) # 빈칸을 0으로 채우기
print('{:+d}'.format(50)) # 양수 음수 기호 표시하기
print('{: d}'.format(-50)) # 입력한 기호가 표시됨
print('{:=+d}'.format(50)) # 기호를 앞으로 밀기
print('{:g}'.format(50.0)) # 의미 없는 소수점 제거
>>>
10 <class 'str'>
50
00050
+50
-50
+50
50
f-문자열이 format() 함수보다 간단하다.
그렇다면 format() 함수는 언제 사용하는 게 좋을까?
# 문자열 내용이 너무 많을 때 : 어떤 데이터가 출력되는지 확인하기 쉬움
# 데이터를 리스트에 담아서 사용할 때
data = ["ggomi", 3, "cat"]
print(f'이름: {data[0]} 나이: {data[1]} 종: {data[2]} ...')
print('이름: {} 나이: {} 종: {} ...'.format(*data))
>>>
이름: ggomi 나이: 3 종: cat ...
이름: ggomi 나이: 3 종: cat ...
False로 반환되는 값
None
0
0.0
빈 컨테이너(빈 문자열, 빈 리스트, ..)
number = input("정수 입력: ")
last_character = number[-1]
if last_character in "02468":
print("짝수")
else:
print("홀수")
>>>
정수 입력: 12345
홀수
for 반복자 in 반복할 수 있는 것:
코드
반복할 수 있는 것 = 이터러블(iterable)
내부에 있는 요소들을 차례차례 꺼낼 수 있는 객체
for i in range(5, -1, -1):
pass
for i in reversed(range(5)):
pass
list = [1, 2, 1, 2]
value = 2
# 리스트 안에 value가 있다면 반복
while value in list:
list.remove(value)
print(list)
>>>
[1, 1]
유닉스 타임 : 세계 표준시 1970년 1월 1일 0시 0분 0초 기준으로 몇 초가 지났는지 정수로 나타낸 것
import time
target_tick = time.time() + 5
number = 0
while time.time() < target_tick: # 5초 동안 반복
number += 1
print(number)
>>>
(5초가 지난 후)
54689724
i = 0
while True:
print(f'{i}번째 반복문 입니다.')
i += 1
inputText = input('설치하시겠습니까?(y/n)')
if inputText in ["y", "Y"]:
print('반복문을 종료합니다.')
break
>>>
0번째 반복문 입니다.
설치하시겠습니까?(y/n)n
1번째 반복문 입니다.
설치하시겠습니까?(y/n)n
2번째 반복문 입니다.
설치하시겠습니까?(y/n)Y
반복문을 종료합니다.
list = [1, 2, 3, 4, 5]
print(min(list)) # 1
print(max(list)) # 5
print(sum(list)) #15
del list[1:3] # 슬라이싱 삭제도 가능
print(list)
>>>
[1, 4, 5]
리스트 내부에 사용
a = [1, 2, 3, 4]
b = [*a, *a]
print(b)
>>>
[1, 2, 3, 4, 1, 2, 3, 4]
함수의 매개변수 위치에 사용
# 리스트에 요소를 추가할 때 비파괴적으로 구현 가능
a = [1, 2, 3, 4]
c = [*a, 5]
print(a)
print(c)
>>>
[1, 2, 3, 4]
[1, 2, 3, 4, 5]
리스트명 = [표현식 for 반복자 in 반복할 수 있는 것 if 조건문]
array = ["사과", "자두", "배", "초콜릿", "바나나"]
output = [fruit
for fruit in array
if fruit != "초콜릿"]
print(output)
>>>
['사과', '자두', '배', '바나나']
공부하면서 익혀나가면 된다.
비파괴적 함수 : 원본을 변화시키지 않는 함수
str.upper()
str.lower()
...
파괴적 함수
list.append()
list.extend()
list.insert()
...
text = (
"이렇게 입력해도 "
"하나의 문자열로 연결됩니다."
)
print(text)
>>>
이렇게 입력해도 하나의 문자열로 연결됩니다.
number = 2
print((
"입력한 숫자는 {}입니다.\n"
"{}는(은) 짝수입니다."
).format(number, number))
>>>
입력한 숫자는 2입니다.
2는(은) 짝수입니다.