02wk-1: 파이썬의 자료형 (2)

Author

최규빈

Published

March 13, 2023

강의영상

https://youtube.com/playlist?list=PLQqh36zP38-xyfFAJpOK00B4fIn6UQggd

강의노트의 저장 및 정리

1. website에 들어가서 강의노트를 pdf 혹은 html 파일로 변환한다.

  • 강의노트를 출력, 책으로 만들거나..
  • 아이패드등에 저장하고 필기하면서 공부한다..

2. 코랩이용

  • https://guebin.github.io/PP2023 에서 원하는 강의노트 선택 \(\to\) collab 버튼을 누른뒤에 강의노트 파일을 연다 \(\to\) 다운로드 or 본인의 구글 드라이브에 저장
  • 코랩을 연다 \(\to\) 파일열기 \(\to\) github / guebin / PP2023 / 파일찾기 \(\to\) 강의노트 파일 열기 \(\to\) 다운로드 or 본인의 구글 드라이브에 저장

3. 깃헙에서 저장

  • 파일하나씩 저장
  • 레포지토리 전체 저장

참고도서 소개

- 전자교재

- 종이책

  • 효율적 개발로 이끄는 파이썬 실천 기술
  • Learning python: powerful object-oriented programming
  • 전문가를 위한 파이썬 : 파이썬3 버전 기준 | 간단하고, 명료하고, 효율적인 파이썬 프로그래밍

주피터랩

- 파일탐색기, 저장된 변수값 확인 등의 기능이 있음

- interactive notebook이 아니다.

a=1
print(a)
1
a=3

주석

a=3  
#a=4
print(a)
3

str 기본내용

선언

- 예시1

a='guebin'
a
'guebin'

- 예시2

a="guebin"
a
'guebin'

연산

- 더하기(+)연산

a='X'
b='2'
c=a+b
c
'X2'

- 빼기(-)연산

a='X2'
b='2'
a-b
TypeError: unsupported operand type(s) for -: 'str' and 'str'
  • 이런건 없다.

- 곱하기(*)연산

a='X'
a+a+a
'XXX'
a*3 # a*3 = a+a+a = 'X'+'X+'X'
'XXX'

아래도 가능하다.

3*a
'XXX'

그리고 아래도 가능하다.

a='X'
b=3 
a*b
'XXX'

대신에 의미상 맞지 않는 것은 수행되지 않고 에러가 난다.

a='X'
b='Y'
a+b
'XY'
a*b
TypeError: can't multiply sequence by non-int of type 'str'

- 나눗셈(/)연산

a='XX'
a/2
TypeError: unsupported operand type(s) for /: 'str' and 'int'
  • 이런건 없다..

인덱싱

- str은 하나의 벡터 문자가 여러개 있는 형태라고 생각하면 된다.

a='guebin'
a
'guebin'
  • 6개의 칸에 글씨가 하나씩 들어가 있음.

- 대괄호 []안에 숫자를 넣는 방식으로 벡터의 원소를 호출할 수 있다. (주의: 인덱스가 0부터 시작함)

a[0] #첫번째원소
'g'
a[1] #두번째원소 
'u'

마지막원소는 -1로 호출할 수도 있다.

a[-1]
'n'

마지막에서 2번째 원소는 -2로 호출가능하다.

a[-2]
'i'

- 요약하면 아래와 같은 방식으로 호출가능함.

g u e b i n
0 1 2 3 4 5
0 -5 -4 -3 -2 -1
a[4]
'i'
a[-2]
'i'
a[-4]
'e'

- :을 이용하여 여러개의 원소를 호출할 수 있음.

a='guebin'
a[0:3] # a[0],a[1],a[2],a[3]이 아니라 a[0],a[1],a[2]까지만 뽑힌다. 즉 마지막의 3은 호출되지 않는다. 
'gue'
a[1:3] # a[1], a[2] 만 호출 // start=1,  stop=3 
'ue'

index=1부터 시작해서 마지막원소까지 호출하려면?

a='guebin'
a[5] # guebin의 마지막원소 'n'이 출려 
'n'
a[1:5] # 5는 포함되지 않으므로 틀림
'uebi'
a[1:6] # 정답
'uebin'

안 헷갈리는 방법은 없을까? 생략한다.

a[1:]
'uebin'

- 생략의 응용1

a='k-pop' 
a
'k-pop'
a[2:5]
'pop'
a[2:]
'pop'

- 생략의 응용2

a='k-pop'
a
'k-pop'
a[0:2] # a[0],a[1]
'k-'
a[:2] # a[0],a[1] 
'k-'

- 생략의 응용3

a='k-pop'
a
'k-pop'
a[0:5] # a[0],...,a[4]
'k-pop'
a[:]
'k-pop'

str 특수기능

- 파이썬의 변수는 단순히 정보를 담는 그릇이 아니다. 유용한 기능을 제공하는 경우가 있다.

a='ABCD' # a라는 변수는 'ABCD'라는 정보를 담는 그릇의 역할만 하지 않고, 특화된 어떠한 기능도 제공한다. 
a
'ABCD'
a.lower() # a.lower()를 쓰면 a의 모든 문자를 소문자로 바꾸는 기능을 제공, lower(a)라고 읽자!
'abcd'

여기에서 lower()는 문자열에 특화된 기능임. 따라서 당연히 아래는 불가능

a=3.14
a.lower() # lower(a)
AttributeError: 'float' object has no attribute 'lower'

- 자료형에 특화된 기능(=함수)을 확인하는 방법? a.+ tab 으로 목록 확인 가능

a='guebin'
a.upper?
Signature: a.upper()
Docstring: Return a copy of the string converted to uppercase.
Type:      builtin_function_or_method
a.upper() # upper(a) 
'GUEBIN'
a.capitalize() # capitalize(a) 
'Guebin'
a='asdf'

- 문자열에 대한 다른 내용들은 추후에 다루겠음.

- 마음의눈: a.f() 형태를 읽는 팁

  • a.f()f(a)로 생각하면 편리함.
  • a.f(2)f(a,2)로 생각하면 편리함.
  • 이런점에서 R %>% 연산자와 비슷하다고 생각할 수 있다. (약간 다르긴함)

- 사실 .은 좀 더 다양한 상황에서 쓰일 수 있다. 변수이름.함수이름() 의 형태가 아니라

  • 패지키이름.함수이름()
  • 패키지이름.변수이름
  • 패키지이름.패키지이름.함수이름()

와 같이 다양한 형태가 가능하다. 근본적인 공통점은 .을 기준으로 상위개념.하위개념 으로 이해하는 것이 좋다.

len

- len함수 소개: 원소의 갯수를 알려주는 함수.

a='ABCD' 
len(a)
4

- 참고: len은 0차원 변수형에서는 동작하지 않고 1차원 변수형에서만 동작한다.

(0차원) len 함수가 동작하지 않음.

a=3.14
len(a)
TypeError: object of type 'float' has no len()
b=True
len(b)
TypeError: object of type 'bool' has no len()

(1차원) len 함수가 잘 동작함.

a='3.14'
len(a)
4
b=[1,2,3]
len(b)
3

HW: 0315

아래와 같은 문자열이 있다고 하자.

a='Jeonbuk National University' 

1. 적당한 인덱싱을 통하여 출력결과가 아래와 같도록 하라.

# 적당한 인덱싱
'University'

hint: University는 10글자이다.

2. 출력결과가 아래와 같도록 하는 코드를 작성하라. (lower 함수를 이용할 것)

# 적당한 코드 
'jeonbuk national university'

3. 아래의 코드를 관찰하고 isupper()의 기능이 무엇인지 스스로 정리해보라.

'A'.isupper()
True
'AA'.isupper()
True
'Aa'.isupper()
False
'aa'.isupper()
False
'aA'.isupper()
False

유추한 기능이 맞는지 ChatGPT를 통하여 확인하라.

4. 다음중 실행 불가능한 코드를 모두 골라라.

(a) 'a'*2 

(b) 'a'*'2'

(c) 'a'+2 

(d) 'a'+'2'