python - 변수,숫자,문자열

Web-Programming School 1월 18일 수업
본 문서는 패스트캠퍼스 ‘Web-Programming School’ 수업 자료를 바탕으로 작성되었습니다.


1. 각종 용어

literal(리터럴)

: 변하지 않는 고정된 데이터 자체의 표현
ex) python - 정수형 / 문자열/ 부동소수점

상수

: 고정된 값을 가질 수 있는 변수나 변경되지 변수
프로그램이 실행되는 동안 값이 변하지 않는 것
ex) c++ const, Java final

2. 변수

파이썬은 모든것이 객체로 이루어져있다.

#두 a의 id값이 다름
a = 3
type(a)
id(a)

a = float(a)
type(a)
id(a)

객체는 데이터의 형태를 결정해주는 타입으로, 파이썬에는 객체의 타입을 바꿀 수 없음.

객체지향vs절차지향

id(변수명)

변수가 참조하고 있는 객체가 메모리 상에서 가지고 있는 고유 주소 출력
객체란 변수들과 그와 관련된 메서드들이 모여서 이룬 하나의 꾸러미

type(변수명)

변수의 타입 확인

변수의 입력과 출력

var = input()

input() 함수 사용


3.숫자

수학 연산자 (그 중 특이했던 것만)

연산자 설명
// 정수 나누기
% 나머지
** 지수

산술 연산자 결합

우선순위

진수

2진수(binary): 0b또는 0B로 시작 8진수(octal): 0o또는 0O로 시작 16진수(hex): 0x또는 0X로 시작

형변환

int("35") 처럼 intfloat 을 사용


4. 문자열

파이썬3에서는 문자열에서 기본적으로 유니코드(Unicode)를 사용하며, 불변(immutable)하다.

문자열 표현

작은 따음표 또는 큰 따음표

 >>> '패스트캠퍼스 "웹 프로그래밍 스쿨"'
'패스트캠퍼스 "웹 프로그래밍 스쿨"'

세 개의 작은 따음표 또는 큰따음표 여러줄에 걸친 문자열을 나타낼 때 사용

>>>'''안녕하세요.
............. 잘지내시나요?'''

문자열 더하기

>>> notice = ''
>>> notice += '공지사항'
>>> notice += '(패치노트)'
>>> notice += ': 7.1 패치노트'
'공지사항(패치노트): 7.1 패치노트'

형변환

내장함수 str() 사용

인덱스 연산

문자열에서 문자 추출을 위해선 대괄호오프셋 으로 지정 가능
가장 왼쪽은 0, 오른쪽은 -1

>>> lux = '빛으로 강타해요!'
>>> lux[0]
'빛'

문자열은 불변함으로 인덱싱한 부분에 새 값을 대입할 수 없다.

>>> lux[0] = '손'
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'str' object does not support item assignment

슬라이스 연산

[ : ] : 처음부터 끝까지
[start : ]: start오프셋부터 마지막까지
[ : end]: 처음부터 end 오프셋까지
[start : end ] : start 오프셋부터 end오프셋까지
[start : end : step ] : start 오프셋부터 end오프셋까지 step 만큼씩 뛰어넘음

lux = '빛으로 강타해요!'

>>> print(lux[:])
>>> print(lux[0:])
>>> print(lux[:3])
>>> print(lux[3:5])
>>> print(lux[0:6:2])

	빛으로 강타해요!
	빛으로 강타해요!
	빛으로
	 
	빛로강

길이

len()사용

문자열 나누기

>>> twice = '나연, 정연, 모모, 사나, 지효, 미나, 다현, 채영, 쯔위'
>>> twice.split(',')
['나연', ' 정연', ' 모모', ' 사나', ' 지효', ' 미나', ' 다현', ' 채영', ' 쯔위']

split함수에 진자로 주어진 구분자 를 기준으로 하나의 문자열 리스트 형태로 반환

문자열 결합

>>> twice = '나연,정연,모모,사나,지효,미나,다현,채영,쯔위'
>>> twice_split=twice.split(',')
>>> twice_join = ', '.join(twice_split)
>>> print(twice_join)

나연, 정연, 모모, 사나, 지효, 미나, 다현, 채영, 쯔위

문자열 리스트를 하나의 문자열로 결합 각 문자열을 결합해줄 구분자 문자열 지정 후 join()함수 이용

대소문자 다루기

>>> lux = 'lux, the Lady of Luminosity'
>>> lux.capitalize()
'Lux, the lady of luminosity'
>>> lux.title()
'Lux, The Lady Of Luminosity'
>>> lux.upper()
'LUX, THE LADY OF LUMINOSITY'
>>> lux.lower()
'lux, the lady of luminosity'
>>> lux.swapcase()
'LUX, THE lADY OF lUMINOSITY'

capitalize(): 첫글자만 대문자 title() : 띄어쓰기를 기준으로 첫글자 대문자 upper() : 모든 글자를 대문자로 변경 lower() : 모든 글자를 소문자로 변경 swapcase() :대문자는 소문자로/ 소문자는 대문자로

문자열 포맷

새 스타일 ({},format) {}.format(변수)

# 기본형태
>>> '{} {} {}'.format(d, f, s)
'37 3.14 Fastcampus'

# 각 인자의 순서를 지정
>>> '{1} {2} {0}'.format(d, f, s)
'3.14 Fastcampus 37'

# 각 인자에 이름을 지정
>>> '{d} {f} {s}'.format(d=50, f=1.432, s='WPS')
'50 1.432 WPS'

# 딕셔너리로부터 변수 할당
>>> dict = {'d': d, 'f': f, 's': s}
>>> '{0[d]} {0[f]} {0[s]} {1}'.format(dict, 'WPS')
'37 3.14 Fastcampus WPS'

# 타입 지정자 입력
>>> '{:d} {:f} {:s}'.format(d, f, s)
'37 3.140000 Fastcampus'

# 이름과 타입지정자를 모두 사용
>>> '{digit:d} {float:f} {string:s}'.format(digit=700, float=1.4323, string='Welcome')
'700 1.432300 Welcome'

# 필드길이 10, 우측정렬
>>> '{:10d}'.format(d)
'        37'
>>> '{:>10d}'.format(d)
'        37'

# 필드길이 10, 좌측정렬
>>> '{:<10d}'.format(d)
'37        '

# 필드길이 10, 가운데 정렬
>>> '{:^10d}'.format(d)
'    37    '

# 필드길이 10, 가운데 정렬, 빈 공간은 ~로 채움
>>> '{:~^10d}'.format(d)
'~~~~37~~~~'

f 표현법

f'{변수 또는 표현식}'

실습
여러 줄의 텍스트를 multi_lines변수에 할당하고,
print()함수로의 출력과 인터프리터의 자동 출력(변수명 입력)을 비교해보시오.

>>> multi_lines='''안녕하세요
오늘은 날씨가 참 좋네요
좋은 하루 되세요'''
>>>print(multi_lines)
>>>multi_lines

안녕하세요
오늘은 날씨가  좋네요
좋은 하루 되세요

'안녕하세요\n오늘은 날씨가 참 좋네요\n좋은 하루 되세요'

print명령어는 \ n 개행문자를 읽어준다.