< 공부한 내용 >
1. 변수
2. 연산자
3. print 출력 양식
4. 키보드 입력 & 형 변환(casting)
5. 문자열 유형과 처리
6. escape 처리
1. 변수
'''
변수(variable)
- 형식) 변수명 = 값 or 수식 or 변수명
- 자료가 저장된 메모리 이름
- 생성된 변수 = 객체(object)
- 타입이 없음 : R과 동일
- int a = 10 (java)
- a = 10 (python) 별도의 타입이 오지 않음
'''
# 1. 변수와 자료형
var1 = "Hello python"
var2 = "Hello python"
print(var1) # Hello python
print(var2) # Hello python
print(type(var1), type(var2)) # <class 'str'> <class 'str'>
var1 = 100 # 값 수정
print(var1, type(var1)) # 100 <class 'int'>
var3 = 150.25
print(var3, type(var3)) # 150.25 <class 'float'>
var4 = True # False
print(var4, type(var4)) # True <class 'bool'>
# 추가내용
# 2, 8, 16
print("\n진법변환")
print(10, bin(10), oct(10), hex(10)) # 10 0b1010 0o12 0xa
print(10, 0b1010, 0o12, 0xa) # 10 10 10 10
# 2. 변수명 작성 규칙
'''
1. 첫단어 : 영문자 or _(숫자, 특수문자 사용불가)
2. 대소문 구분(Score, score)
3. 키워드(예약어) 사용 불가, 한글 비권장
4. 낙타체 : 두 단어 결합(korScore) -> 낙타 등처럼 굴곡 두 단어
5. 의미있는 단어 사용
'''
_num10 = 10
_Num10 = 20
print(_num10 * 10) # 100
print(_Num10 * 10) # 200
# 키워드(명령어) 확인
import keyword # keyword 모듈 임포트
kw = keyword.kwlist # 키워드 가져오기
print('키워드 : ', kw)
# 키워드 : ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
print('키워드 개수 : ', len(kw)) # 키워드 개수 : 35
# 낙타체
korScore = 90
matScore = 85
engScore = 75
tot = korScore + matScore + engScore
print('tot = ', tot) # tot = 250
# 3. 참조변수 : 메모리 객체를 참조하는 주소 저장 변수
x = 150
y = 45.23
y2 = y # 주소 복사
x2 = 150
# 객체 주소 출력
print("x = ", x, id(x)) # x = 150 1676504576
print("x2 = ", x2, id(x2)) # x2 = 150 1676504576
print("y = ", y, id(y)) # y = 45.23 14409168
print("y2 = ", y2, id(y2)) # y2 = 45.23 14409168
print(id(150)) # 1676504576 ( x, x2가 가지고 있는 주소와 같음 )
# x와 내용(객체) 비교
if(x == 150) :
print("내용은 150") # 내용은 150
# x의 주소 비교
if(x is 150) :
print("x와 150의 객체의 주소는 동일함") # x와 150의 객체의 주소는 동일함
2. 연산자
'''
1. 변수에 값 할당(대입 연산자)
2. 산술, 관계, 논리 연산자
'''
# 1. 변수에 값 할당(대입 연산자)
i = tot = 10
i += 1 # i = i+1
tot += 1 # tot = tot+1
print(i, tot) # 11 11
# 같은 줄에 중복 출력
print('출력1', end=' ') # 출력1 출력2
print('출력2')
v1, v2 = 100, 200
print(v1, v2) # 100 200
# 변수 값 교체
v2, v1 = v1, v2
print(v1, v2) # 200 100
# 패킹(packing) 할당 # *
lst = [1, 2, 3, 4, 5] # list
print(lst) # [1, 2, 3, 4, 5]
v1, *v2 = lst
print(v1) # 1
print(v2) # [2, 3, 4, 5]
*v1, v2 = lst
print(v1) # [1, 2, 3, 4] - vector(1차원) 변수
print(v2) # 5 - Scala 변수
*v1, v2, v3 = lst
print(v1) # [1, 2, 3]
print(v2) # 4
print(v3) # 5
# 2. 산술, 관계, 논리 연산자
print('산술연산자 : ', 10+3, 10-3, 10*3, 10/3, 10//3, 10%3, 10**2)
# 산술연산자 : 13 7 30 3.3333333333333335 3 1 100
print('관계연산자 : ', 5 > 4, 5 >= 2, 5 != 4, 5 == 50)
# 관계연산자 : True True True False
print('논리연산자 : ', 5 > 4 and 5 == 5, 5 == 3 or 5 != 6, not(5 != 6))
# 논리연산자 : True True False
# 카운터/누적변수
cnt = 0 # 초기화
cnt = cnt + 1 # 누적변수
cnt += 1 # 축소형
#cnt++
print(cnt) # 2
tot = 0 # 초기화
tot = tot + cnt # 누적변수
tot += cnt # 축소형
print(tot) # 4
3 . print 출력 양식
# 1) format(value , '양식')
print( format(3.14159, '8.3f') ) # '전체자리.소수점자리f'
# 3.142
print(format(125000, '3,d')) #125,000
print(format(125000, '10d')) # 125000
# 2) 양식문자와 값 표현
# 형식) print("%양식문자" %(값))
'''
%s : 문자열
%e : 단일문자
%d : 정수
%f : 실수
%o : 8진수
%x : 16진수
%% : %출력
'''
num1 = 10
num2 = 20
tot = num1 + num2
name = "홍길동"
age = 35
print("%d + %d = %d" %(num1, num2, tot)) # 10 + 20 = 30
print("이름은 %s이고, 나이는 %d이다." %(name, age)) # 이름은 홍길동이고, 나이는 35이다.
pi = 3.14159
print("원주율 = %.3f" %(pi)) # 원주율 = 3.142
# 3) 외부 상수 받기
# 형식) print('{}'.format(값))
print('이름은 {}이고, 나이는 {}입니다.'.format(name, age))
print('이름은 {1}이고, 나이는 {0}입니다.'.format(age, name))
# 축약형
print(f'이름은 {name}이고, 나이는 {age}입니다.')
uid = "hong"
sql = f"select * from emp where uid = {uid}"
4. 키보드 입력 & 형 변환
# 문자 -> 숫자(정수)
a = int(input("숫자 입력 : ")) # 문자 -> 숫자
b = int(input("숫자 입력 : ")) # 20
add = a + b
print("add = ", add)
# 숫자 입력 : >? 10
# 숫자 입력 : >? 20
# add = 30
# 문자 -> 숫자(실수)
a = float(input("숫자 입력 : ")) # 문자 -> 숫자
b = float(input("숫자 입력 : ")) # 20
add = a + b
print("add = ", add)
# 실수 <-> 정수
print( float(24)) # 24.0
print( int(24.5)) # 24
# 문자 <-> 숫자
print(2 + '2') # TypeError : 'int' and 'str'
print(str(2) + '2') # 22
print(2 + int('2')) # 4
# bool <-> 숫자
print(int(True)) # 1
print(bool(0)) # False
5. 문자열 유형과 처리
'''
문자열 특징
1. 문자열(string) : 문자들의 집합
2. 문자 분리 가능 : 순서 존재
3. indexing, slicing 가능
4. 수정불가 : 문자열 수정 -> new object 생성
'''
# 1) 문자열 유형
lineStr = "this is one line string" # 한줄 문자열
multiLine = """ this
is multi line
string
""" # 여러줄 문자열
print(lineStr)
print(multiLine)
# sql로 작성
no = input("부서번호 : ")
query = f"""select * from emp
where deptno ={no}
order by eno desc"""
print(query)
# 2) indexing, slicing
# "this is one line string"
print( len(lineStr) ) # 23
print( lineStr[0] ) # 첫번째 문자 : t
print( lineStr[0:3] ) # [start:end-1] # thi
print( lineStr[:4]) # this
print( lineStr[-1]) # g
print( lineStr[-6:]) # string
print( lineStr[:]) # 전체
print( lineStr[::2]) # step 적용 : ti soeln tig (2씩 증가 -> 1,3,5,7,9,... 번째 위치의 문자들)
'''
색인(index)
변수[start:end:step] # step : 얼마씩 증가/감소 할 것인지
'''
# slicing
substring = lineStr[-6:]
print(substring) # string
# 3) 문자열 연산(+, *)
print("python" + "program") # pythonprogram
print("python" + str(3.7) + ".exe") # python3.7.exe
print('-'*30) # *는 반복해주는 역할 : ------------------------------
# 4) 문자열 관련 함수
print( len(lineStr)) # 23
print( len(multiLine)) # 27
print( type(lineStr)) # <class 'str'>
print(lineStr.count('t')) # 2
print(lineStr.index('t')) # 0 (첫번째로 발견된 t의 인덱스)
# 접두어 비교
print(lineStr.startswith('this')) # True : 'this'라는 접두어로 시작하느냐? 참
print(lineStr.startswith('that')) # False
# 5) 문자열 분리와 결합
# 공백 기준 분리
# "this is one line string"
words = lineStr.split(sep=" ")
print(words) # ['this', 'is', 'one', 'line', 'string']
sentence = multiLine.split(sep="\n") # 줄바꿈
print(sentence) # [' this', 'is multi line', 'string', '']
# 문자열 결합(join)
# '구분자'.join(변수)
sent = ' '.join(words)
print(sent) # this is one line string
print(len(sent)) # 23
6. escape 처리
# escape : 특수기능('\n', '\t')으로 부터 탈출 ( 특수기능 사용 안하는 방법 )
print("escape")
print("\n출력")
print("\\출력") # escape 차단 방법1
print(r"\출력") # escape 차단 방법2
------------------------------------------------ example ------------------------------------------------
'Python 과 머신러닝 > I. 기초 문법' 카테고리의 다른 글
Python 기초 5장. 함수 (2) (0) | 2019.09.30 |
---|---|
Python 기초 5장. 함수 (1) (0) | 2019.09.30 |
Python 기초 4장. 정규표현식 (0) | 2019.09.30 |
Python 기초 3장. 자료구조 (0) | 2019.09.30 |
Python 기초 2장. 제어문 (0) | 2019.09.30 |
댓글