본문 바로가기

Python

211216 학습일기

장고를 이용해 파이보 서비스 홈페이지를 만들었다.(점프 투 장고를 보며)

근데 너무했던 게 글쎄 파이썬만 배운다고 되는 일이 아니었다.

html 파일도 나오고, .js 파일도 나오고, 모르는 것 투성이었다.

.py 파일도 내가 알던 그 파이썬 문법이 아닌 것 같고;;

그래서 점프 투 파이썬과 파이썬 공식 홈페이지의 파이썬 튜토리얼을 보기로 했다.

아는 건 넘어가고 모르는 것만 빠르게 정리하고 넘어가자.

 

먼저 점프투 파이썬부터.

 

1. 

\

백슬래시 이놈은 항상 헷갈린다.

키보드에서도 \ 이렇게 생겼는데 코딩에서는 저게 백슬래시(역슬래시)로 표현된다.

 

\' 블라블라 \'
\" 블라블라 \"

이렇게 백슬래시 에 ' or " 는 문자열을 둘러싸는 기호가 아니라 문자 ' or " 그 자체를 뜻하게 된다.

 

2. 

줄 바꿈을 하기 위해서는 \n 을 써줘야 하는 건 알고 있었다.

a= "안녕. \n나는 땡땡이야"
print(a)

안녕

나는 땡땡이야

 

이렇게 출력하려면 위와 같이 입력을 해야한다.

근데 코딩했을 때 모양이 예쁘진 않다.

좀 조잡한 느낌?

 

근데 이렇게 써줘도 된단다.

a = '''
안녕
나는 땡땡이야
'''
print(a)

나는 ''' 어쩌구 ''' 는 주석으로만 사용하는 줄 알았다.

#이 한줄짜리 주석을 쓰는데 사용한다면 '''어쩌구 ''' 은 여러줄짜리 주석을 쓸 수 있으니까.

근데 이렇게 여러줄짜리 문자열을 변수에 대입할 때에도 사용할 수 있다.

 

그리고 \n이 이스케이프 코드라는 것도 첨 알았다.

이스케이프 코드란 프로그래밍할 때 미리 사용할 수 있도록 미리 정의해둔 문자 조합이라고 한다.

 

3.

index 라는 단어가 자꾸 헷갈린다.

파이보 서비스 만들 때에도 .index가 많이 나왔는데 이게 뭐였지 하면서 계속 헷갈렸다.

 

indexing이란 무엇인가를 "가리킨다"는 의미이다.

 

파이썬에서 인덱싱은 이렇게 한다.

"나는 승니" 라는 문자열에서 0번째 문자를 출력하고 싶다면 이렇게 하면 된다.

a = "나는 승니"
print(a[0])

그럼 출력은 이렇게 된다.

이렇게 하는 것을 인덱싱이라고 한다.

 

사실 이건 알고 있었다. 다만 이걸 인덱싱이라고 부르는지는 까먹고 있었다.

용어정리도 중요하니까. 

 

4. 

그럼 3번에서 말한 .index는 어떤 경우에 사용하는 걸까?

a = [121,221,321,421]

a 라는 리스트가 있다. 221 이 리스트에서 몇번째에 있는지 알고싶다면 이렇게 하면 된다.

a = [121,221,321,421]
print(a.index(221))

그럼 이렇게 출력된다.

1

 

5. 

0과 -0은 같은 것이기 때문에

a = "나는 승니"

위와 같은 문자열에서 "니"는 -1번째다. -0번째가 아니고.

 

a = "나는 승니"
print(a[-0])

이렇게 하면 아래와 같이 0번째 문자가 출력된다.

이걸 가지고 한참동안 고민했던 시절이 있다.

"니"가 왜 -0번째가 아니고 -1번째지? 이랬는데

0과 -0이 같은 걸 생각을 못했나보다.

 

6.

immutable은 '불변의' 라는 의미이다. 

 

string 자료형은 그 요솟값을 변경할 수 없다.
따라서 immutable한 자료형이다.

 

immutable 말고 unchangeable을 썼으면 더 쉬웠을텐데ㅋㅋ

올해 첨 알게 된 영단어다.

 

7. 

formatting 은 문자열 안에 어떤 값을 삽입하는 방법이다.

 

만능 %s(문자열 포맷코드)는 어떤 형태의 값이든 변환해 넣을 수 있다.

%s는 자동으로 %뒤에 있는 값을 문자열로 바꾸기 때문이다.

print("나는 %s이다"%"승니")
print("나는 %s이다"%3)
print("나는 %s이다"%1.5)

그러면 이렇게 출력된다.

나는 승니이다
나는 3이다
나는 1.5이다

8.

문자열 포맷 코드인 %s와 %가 같은 문자열 안에 존재하는 경우, %를 나타내려면 반드시 %%로 써야 한다.
하지만 문자열 안에 %s 같은 포매팅 연산자가 없으면 %는 홀로 쓰여도 상관없다.

 

print("이프로는 %s%."%2)

이렇게 하면 오류가 발생한다.

 

따라서 이렇게 해야한다.

print("이프로는 %s%%."%2)

그러면 아래와 같이 출력된다.

이프로는 2%.

 

9.

%d, %s 등의 문자열 포맷코드를 숫자와 함께 사용하면 공백을 만들 수 있다.

print("%10s"%"둥둥")

%(n)s 는 전체 길이가 n인 문자열 공간에서 대입되는 값을 오른쪽 정렬하고 그 앞의 나머지를 공백으로 남겨 두라는 의미이다.(n은 자연수)

아래와 같이 출력된다.

        둥둥

참고로 "둥둥" 앞의 공백은 8칸이다. 10칸 중에 2칸을 잡아먹었으므로.

 

print("%-10s둥둥"%"북이")

%-(n)s는 %(n)s와 대입되는 값을 왼쪽 정렬한다는 점만 다르다.

아래와 같이 출력된다.

북이        둥둥

"북이"와 "둥둥" 사이의 공백도 8칸이다.

"둥둥" 앞의 10칸 중 "북이"가 2칸을 잡아먹었으므로.

 

근데 이게 쓰일 일이 있을까? 아직까지는 없었다.

 

10.

문자열 포맷코드로 소수점 몇번째까지만 나타내고 싶은지도 표현할 수 있다.

근데 여기서 뭔가 문제가 생겼다.

%0.4 뒤에 s 가 올 경우와 f가 올 경우가 출력값이 다르다.

#1
pi = 3.141592
print("%0.4s"%pi)

#1의 출력값은 3.14

 

#2
pi = 3.141592
print("%0.4f"%pi)

#2의 출력값은 3.1416

 

f(float형)로 코드를 써줘야 원하는 대로 소수점 아래 네자리 숫자까지 출력이 된다.

왜 이럴까?

 

점프 투 파이썬 질문 게시판(파이보)에 질문을 올렸으니 답변이 달리면 그때 서술하겠다.

 

 

 

점프 투 파이썬

https://wikidocs.net/book/1

 

'Python' 카테고리의 다른 글

211230 학습일기  (0) 2021.12.31
211224 학습일기  (0) 2021.12.26
211223 학습일기  (0) 2021.12.23
211222 학습일기  (0) 2021.12.22
211221 학습일기  (0) 2021.12.21