파이썬을 사용하기 위해 anaconda를 설치하였다. ( 다운로드 주소 : https://www.anaconda.com/ )
설치가 완료되면 명령 프롬포트 창을 열어서 파이썬을 사용할 경로로 CD 해준다.
Python
은 Jupeter notebook
이라는 툴을 사용하여 작업할 것이다.
cmd
에서 작업 경로로 이동한 것을 확인한 후, conda activate
-> jupyter notebook
을 입력하여 실행하자.
shift + enter
: 실행하고 다음 Cell(줄)로 이동
control + enter
: 실행하고 현재 Cell에 머무르기
a
: 현재 위치에서 위에 새로운 Cell 생성
b
: 현재 위치에서 아래에 새로운 Cell 생성
Cell 선택 후 m
: 마크다운으로 Cell 속성 변경
Cell 선택 후 y
: 파이썬 코드로 Cell 속성 변경
변수명 = 값
- 변수는 반드시 선언하면서 값을 대입해야 한다.
- 처음 선언된 변수이면 변수 선언/초기화, 있는 변수일 경우 값 변경(대입)
- 변수 선언시 대입할 값이 없을 경우 None 값을 대입하면 된다.
(None -> java의 Null과 동일)
파이썬은 "동적 타입 언어" 이다. 따라서 변수 선언시 변수의 데이터 타입을 미리 선언하지 않아도 된다.
ex ) Java의 변수 선언 : int a = 10
a = 1
b = None
c = '텍스트'
a = b = c = d = 7
print(a, b, c, d)
# 출력 : 7 7 7 7
# 변수의 개수와 데이터 개수가 동일해야 가능하다.
a, b, c = '사과', '딸기', '바나나'
✔️ 튜플(Tuple) : 튜플이란?
리스트처럼 여러개의 데이터를 담을 수 있는 자료구조 - 리스트와 튜플의 차이점 차이점1 : 리스트 = 선언시 대괄호 [ ] 사용, 튜플 = 선언시 소괄호 ( ) 사용 차이점2 : 리스트 = 리스트 안의 값 생성, 삭제, 변경 ⭕, 튜플 = 튜플 안의 값 생성, 삭제, 변경 ❌
a = 10
print(a) # 출력 : 10
a = "문자"
print(a) # 출력 : 문자
에러가 발생하지 않고 int 값에서 변경된 str 값이 출력된다.
타입이 다르면 덧셈 등의 연산이 불가능하다.
num = 10
print(num+10) # 출력 : 20
num = "문자"
print(num+10) # 에러 발생
데이터 타입의 종류
- 숫자형(Numeric) - 정수, 실수
- 논리형(bool) - True, False
- 문자열(String)
# 정수와 실수 모두 숫자형 데이터 타입
10, 0.1
# 정수부나 실수부에 0만 있을 경우 생략 가능 (.은 생략 불가)
print(20.0, 20.)
# 0x가 붙음 : 16진수
print(0xAF23)
# 출력 : 44835
# 12345678000 지수 표기법으로 변환
1.2345678e10
=> 1.2345678 * 10**10
# 320 지수 표기법으로 변환
3.2e2
#3.2*10**2
3.2e-2
# 출력 : 0.032
# 제곱연산
2**10
# 출력 : 1024
# 나누기
10 / 4
# 출력 : 2.5
# 몫 연산자
10 // 4
# 출력 : 2
# 나머지 연산자
10 % 3
# 출력 : 1
num = 32
num % 3
# 출력 : 2
# 나머지가 2이므로 num은 3의 배수가 아니다.
모든 타입은 bool 타입으로 변환될 수 있다.
- 숫자: 0-False, 양수/음수-True - 문자열: 글자수가 0인 문자열-False, 1글자 이상-True - None: False - 자료구조: 원소의 개수가 0개-False, 1개 이상의 원소가 있는 것-True
print(bool(10), bool(0), bool(-20))
# 출력 : True False True
print(bool(""), bool("Abc"), bool("A"), bool(" "))
# 출력 : False True True True
bool(None)
# 출력 : False
input()
input()
: 사용자로부터 문자열을 입력받을 수 있다.
# 이름을 입력받은 뒤 입력 받았는지 여부를 출력
name = input("이름: ")
print(bool(name))
# 이름 : 유재석
# True
# 숫자 비교
10 > 5 # True
# 문자열 비교
"a" > "b" # True
name = "홍길동"
print(name == "홍길동") # True
print(name != "홍길동") # False
# 숫자 < 대문자 < 소문자 < 한글 #문자열크기-unicode 값 크기로 비교
"a" > "가" # False
# ord() : 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환
ord("A"), ord("a") # (65, 97)
# 비교할 데이터 입력
age = 20
name = "강동원"
and
연산자 사용
and : 조건에 "모두" 해당하면 True
and 또는 & 사용. & 사용시 피연산자를 소괄호( )로 묶어준다. # 나이가 19세 이상이고 이름은 홍길동인가? age >= 19 and name == "홍길동" (age >= 19) & (name =="홍길동") # 결과 : False
or
연산자 사용
or : 조건 중 "하나만" 해당되어도 True
or 또는 | 사용. | 사용시 피연산자를 소괄호( )로 묶어준다. # 나이가 19세 이상이거나 이름이 홍길동인가? age >= 19 or name == "홍길동" #False (age >= 19) | (name == "홍길동") #False # 결과 : True
''
또는 ""
를 이용하여 입력한다.name = "홍길동"
address = '서울시 종로구'
print(type(name), type(address))
# <class 'str'> <class 'str'>
\n
: 줄 바꿈 기능
info1 = "이름: 홍길동\n나이: 20\n주소: 부산"
print(info1)
# 이름: 홍길동
# 나이: 20
# 주소: 부산
docstring
: 여러줄인 문자열 입력시 """ """
사이에 문장을 입력 (함수, 클래스 설명 작성시에도 사용, 줄바꿈 기능도 함께 적용된다.)
info2 = """이름: 홍길동
나이: 20
주소: 부산"""
print(info2)
# 이름: 홍길동
# 나이: 20
# 주소: 부산
print("C:\class\01_파이썬기초")
# C:\class_파이썬기초 : \는 escape 문자여서 정상 출력되지 않는다.
print("C:\\class\\01_파이썬기초")
# C:\class\01_파이썬기초 : 경로 정상 출력
raw string
: 문자열내의 escape 문자
무시
r"문자열"
path = r"c:\test\name\backup"
print(path)
# c:\test\name\backup
# in 연산자 : ex) where name in ('a', 'b')
# 비교문자열 in 대상문자열 => 대상문자열에 비교문자열이 있는지 여부
address = "서울특별시 영등포"
#address에 "종로"라는 문자열이 있는지 여부 bool으로 반환
print("종로" in address)
print("영등포" in address)
# False, True
# not in : in의 반대, 없으면 true
print('종로' not in address)
print('영등포' not in address)
# True, False
len()
: 글자 수 조회 함수
len("문자열"), len("asdfasadfhadfhgsd")
# (3, 17)
indexing
, slicing
을 이용하여 문자열을 조회할 수 있다.
s = "안녕하세요. 반갑습니다."
#indexing : 한글자를 조회
print("세번째글자: " + s[2])
# 세번째글자: 하
문자의 가장 마지막 글자부터 역 순으로 조회 가능 (맨 마지막 글자 : -1
)
print("뒤에서 두번째 글자: ", s[11])
print("뒤에서 두번째 글자: ", s[-2])
# 뒤에서 두번째 글자: 다
# 뒤에서 두번째 글자: 다
특정 index
의 값 변경은 불가능하다.
s[0] = "밖"
# 에러 발생
slicing 문법 : [시작idx : 종료idx : 간격]
s2 = '0123456789'
print(s2[2:8:1])
# 234567
print(s2[2:-2:1]) #앞에서 2번째 idx ~ 뒤에서 두번째 idx, 한 글자 씩 증가
# 246
print(s2[8:2:-1]) # reverse, 역 순으로 증가
# 876543
# 간격 생략 : dafault: 1
s2[1:9]
# '12345678'
# 시작 index 생략 - default: 0
s2[:8]
# '01234567'
# 종료 index 생략 - default: 마지막 index + 1 (마지막 index까지 다 가져오기)
s2[2:]
# '23456789'
s2[:] # 0 ~ 마지막, 1씩 증가
# '0123456789'
s2[::-1] # 전체 reverse
# '9876543210'
복잡한 문자열의 형식화(string formatting)을 이용하는 방법은 format 메서드
, f 문자열
, % 기호
세가지가 있다.
다음 "홍길동"의 정보를 출력해보자.
# 홍길동의 정보
name = "홍길동"
address = "서울"
tel = "010-1111-2222"
age = 20
tall = 180.32
print("이름: "+name+"\n주소: "+address + tel + str(age) + str(tall))
# 이름: 홍길동
# 주소: 서울010-1111-222220180.32
format
사용layout = "이름: {}\n주소: {}\n전화번호: {}\n나이: {}\n키: {}"
print(layout.format(name, address, tel, age, tall))
# 이름: 홍길동
# 주소: 서울
# 전화번호: 010-1111-2222
# 나이: 20
# 키: 180.32
print(layout.format(name, address, tel, age, tall))
print("이름: {}\n주소: {}\n전화번호: {}\n나이: {}\n키: {}".format(name, address, tel, age, tall))
# 동일하게 출력된다.
f-string(f문자열)
사용print(f'이름: {name}\n주소: {address}\n나이: {age}\n키: {tall:.1f}')
# 이름: 홍길동
# 주소: 서울
# 전화번호: 010-1111-2222
# 나이: 20
# 키: 180.32
% 기호
사용print("이름: %s, 주소: %s, 나이: %d, 키: %.2f" % (name, address, age, tall))
# 이름: 홍길동, 주소: 서울, 나이: 20, 키: 180.32
v = "이름: %s, 주소: %s, 나이: %d, 키: %.2f" % (name, address, age, tall)
print(v)
# 이름: 홍길동, 주소: 서울, 나이: 20, 키: 180.32