일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 웹프로그래밍
- Ajax
- 공문서작성규정
- 데이터포맷
- Servlet
- 스프링프레임워크
- java annotation
- 자바스크립트
- java컴파일
- Database
- HTTP
- 데이터규정
- 세션
- 자바
- 데이터문서포맷
- Session
- Multipart
- 카카오APi
- JSTL
- JSP
- 프로그래밍용어
- 데이터베이스
- JavaScript
- xml
- Request/Response Header
- xml mapping
- XML Core
- XML DOM
- Java
- 반응형웹
- Today
- Total
KyungHwan's etc.
파이썬 기본문법 정리(PyThon) - 정리중 본문
주석처리
#한줄
"""
여러줄
여러줄
여러줄
"""
숫자와 문자열
number = 25
String = '25'
#name 과 String 은 숫자와 문자이기 때문에 다름
#더하기 +
plus = my_age + 1
#곱하기 *
multiply = 9 * 9
#나누기 /
divide = 30 / 5
#거듭제곱 ** (예. 2의 20승)
powerful = 2 ** 20
#나머지 %
remainder = 15 % 4
문자열 더하기
String1 = '1234'
String2 = '5678'
String3 = String1 + String2 #결과값12345678
조건문
a = 10
b = 20
if a < b:
print('a<b') #if 다음줄이 들여쓰기가 되야 된다!!
#크다
0 < 10
10 > 11
#크거나 같다, 작거나 같다
3 <= 10
15 >= 10
#같다
5 == 5
#같지 않다
5 != 10
#and연산
#두 조건이 모두 참인지를 체크 예)예. a는 20대이다.
20 <= a and a < 30
#or
#두 조건 중 하나라도 참이다 예시)예시. a는 18세 미만 또는 60세 이상이다.
a < 18 or 60 <= a
#not true/false를 뒤집기 위해 사용
파이썬의 블럭
파이썬은 함께 실행되는 하나의 코드 덩어리로 같은 들여쓰기를 하나의 블럭으로 취급
if True:
print('1블럭진입')
if True:
print('1블럭 안에 블럭')
if True:
print('1블럭안 2블럭안 진입')
print('1블럭 끝코드')
print('1블럭 끝')
if False:
print('3블럭 진입')
if True:
print('3블럭안 에 블럭 진입') #3블럭이 진입안되기 때문에 실행안됨
If-else & elif
a = 10
b = 20
c = 30
if a > b:
print('a가 b보다 크다')
else:
print('a가 b보다 작다')
if a > b:
print('a가 b보다 크다')
elif a < b: #그냥 else의 조건을 넣는것이 아닌 elif 을 써야한다
print('a가 b보다 작다')
함수 정의
'''
함수정의방법
def 함수이름:
함수덩어리
'''
def print_a():
r1 = 10
r2 = 50
r3 = r1 + r2
print(r3)
print_a() #60
Format
number = 20
welcome = '환영합니다'
base = '{} 번 손님 {}'
#아래 3개의 print는 같은 값을 출력
print(number,'번 손님',welcome)
print(base.format(number,welcome))
print('{} 번 손님 {}'.format(number,welcome))
#=>20 번 손님 환영합니다
문자열
string1 = '따옴표로 싼 문자열 안에는 큰따옴표(")를 사용할 수 있다.'
string2 = "큰따옴표로 싼 문자열 안에는 따옴표(')를 사용할 수 있다."
a1 = '"큰따옴표 두개 쓰기"'
a2 = "'작은따옴표 두개 쓰기"
string3="""줄도 바꾸고
큰따옴표"와 따옴표'를 마음대로 쓸 수 있음"""
정수와 실수
a = 5
b = 5.0 #그냥 쓰면 정수와 실수로 나옴
div = 6 / 5 #정수끼리 나누면 실수가 나올수 있음
div = 6 // 5 # 몫만을 구하려면 // 연산자이용
print(int(5.0)) #정수로
print(float(5)) #부동소수점으로
print(5 * 1.0) # 부동소수점으로
입력값 받기(input)
a = input('입력할 값을 넣으세요') #입력한 값을 넣은 값이 a 변수로 지정됨
print('입력한값은:' , a , '입니다')
리스트(List)
list1 = ['가위','바위','보']
print(list1)
print(list1[0])
print(list1[1])
list1[0] = "안녕"
print(list1[0]) #안녕
print(list1[-1]) #보 뒤에서 첫번째
print(list1[-2]) #바위 뒤에서 두번째
리스트(List)수정
list1 = [37 , 23 , 10, 33, 29, 40]
print(list1)
list1.append(100)
print(list1)
list2 = list1 + [101]
print(list2)
list3 = list1 + list2
print(list3)
n = 12
ownership = n in list3 #리스트에 그값이 있는지 확인해주는 in 연산자
print(ownership)
n = 10
if n in list3:
print('{}은 있어!'.format(n))
del list1[10] #리스트의 10번째 값을 지워라
list1.remove(40)
#리스트에 40이라는 값이 있는경우 삭제
#여러개의 값이 있는 경우 가장 앞에 있는 하나만 지워짐
List의 다양한 기능
list.index( value )
: 값을 이용하여 위치를 찾는 기능list.extend( [value1, value2] )
: 리스트 뒤에 값을 추가list.insert( index, value )
: 원하는 위치에 값을 추가list.sort( )
: 값을 순서대로 정렬list.reverse( )
: 값을 역순으로 정렬
List와 String
'''
리스트와 문자열은 유사하다.
서로 변환이 가능하다.
list = str.split( ) : 문자열에서 리스트로
" ".join( list ) : 리스트에서 문자열으로
'''
list1 = [1,2,3]
list1.index(1) # 0
str1 = "hello"
str1[0] #'h'
time_str = "10:35:27"
time_list = time_str.split(":")
print(time_list)
str = ":".join(time_list)
print(str)
For in 반복문
patterns = [1,2,3,4]
for pattern in patterns:
print(pattern)
'''
1. 리스트 patterns의 값을 하나씩 꺼내 pattern으로 전달
2. 리스트의 길이만큼 print (pattern) 실행
'''
For range,enumerate
for i in range(5): #[0,1,2,3,4]
print(i)
names = ['영희', '철수', '민수', '혜연']
for i in range(4): #필요한 만큼의 숫자를 만들어내는 유용한 기능
name = names[i]
print('{}번: {}'.format(i + 1 ,name))
for i, name in enumerate(names): #리스트가 있는 경우 순서와 리스트의 값을 전달하는 기능
print('{}번: {}'.format(i + 1, name))
모듈 사용하기
def get_web(url):
"""URL을 넣으면 페이지 내용을 돌려주는 함수"""
import urllib.request #import 모듈이름
response = urllib.request.urlopen(url) #사용 방법: 모듈이름.모듈안의 구성요소
data = response.read()
decoded = data.decode('utf-8')
return decoded
url = input('웹 페이지 주소?')
content = get_web(url)
print(content)
모듈 만들기
def random_rsp():
"""무작위 가위바위보"""
import random
return random.choice(['가위','바위','보'])
PAPER = '보'
SCISSOR = '가위'
ROCK = '바위'
#------------ my_module
import my_module
selected = my_module.random_rsp()
print(selected)
print('가위?' , my_module.SCISSOR == selected)
#같은 폴더에 있어야한다.
딕셔너리
여러 값을 저장해 두고 필요한 값을 꺼내 쓰는 기능
이름표를 이용하여 값을 꺼내 사용
사용할 때는 리스트와 비슷한 방식
wintable = {
'가위' : '보',
'바위' : '가위',
'보' : '바위',
}
print(wintable['가위']) #보
dict = { "이름표" : [1,2,3] }
# ↑ 값은 리스트를 포함해서 무엇이든 올 수 있습니다.
print( dict["이름표"] ) #[1,2,3]
딕셔너리 수정하기
dict = ['one':1,'two':2]
#추가
dict['three'] = 3
# list = [1,2,3] 에서 list[3]=4 하면 인덱스에러가 뜨지만,딕셔너리는 그렇지않음
#수정
dict['one'] = 11 # one:11, two:2 three:3
#삭제
del(dict['one'])
dict.pop('two') #pop은 삭제할값을 리턴하면서 삭제
딕셔너리와 반복문
딕셔너리는 값의 순서를 지키지 않는다.
ages={'Tod':35,'Jane':23, 'Paul':62}
'''for key in ages.keys: #keys 생략가능
print(key)''' #TOd,Jane,Paul ->딕셔너리기 때문에 순서가 상관없이나옴
'''for value in ages.values():
print(value)''' #35,23,62
'''for key in ages.keys():
print('{}의 나이는 {}입니다.'.format(key, ages[key]))'''
for key, value in ages.items(): #key와 그 벨류값을 동시에 가져온다.
print('{}의 나이는 {}입니다'.format(key,value))
딕셔너리와 리스트 비교
List | Dictionary | |
---|---|---|
생성 | list = [ 1, 2 ,3 ] | dict = { 'one':1, 'two':2 } |
호출 | list[ 0 ] | dict[ 'one' ] |
삭제 | del( list[ 0 ] ) | del( dict[ 'one' ] ) |
개수 확인 | len( list ) | len( dict ) |
값 확인 | 2 in list | 'two' in dict.keys( ) |
전부 삭제 | list.clear( ) | dict.clear( ) |
차이점
List | Dictionary | |
---|---|---|
순서 | 삭제 시 순서가 바뀌기 때문에 인덱스에 대한 값이 바뀐다 | key로 값을 가져오기 때문에 삭제 여부와 상관없다 |
결합 | list1 + list2 | dict1.update( dict2 ) |
list1 = [1,2,3]
list2 = [4,5,6]
list3 = list1 + list2 #[1,2,3,4,5,6]
dict1 = {'one':1 , 'two':2}
dict2 = {1:100,2:200}
dict1.update(dict2) #{'one':1 , 'two':2, 1:100,2:200}
튜플 만들기
튜플은 값의 변경과 삭제가 불가능
tuple1 = (1, 2, 3, 4)
tuple2 = 1, 2, 3, 4 # 괄호가 없어도 만들어지지만 괄호를 쓰는것을 추천한다.
#한번 정해진 순서을 바꿀 수 없다.
tuple2[0] #1
tuple2[1] #2
tuple2[3] = 5 # 에러발생 , 한번 만들면 변경할수없다.
del tuple2 #삭제불가
tuple.pop #삭제불가.
팩킹(packing) 과 언팩킹(unpacking)
packing
하나의 변수에 여러개의 값을 넣는 것
unpacking
패킹된 변수에서 여러개의 값을 꺼내오는 것
c = (3, 4)
d, e = c # c의 값을 언패킹하여 d, e에 값을 넣었다 d = 3 , c = 4
f = d, e # 변수 d와 e를 f에 패킹 f = (3, 4)
x = 5
y = 10
x, y = y , x #두 변수의 값을 바꿀 때 임시변수가 필요 없다. ex 임시변수 temp 와같은것
def tuple_func():
return 1,2
q,w = tuple_func() #함수의 리턴 값으로 여러 값을 전달할 수 있다.
튜플을 이용한 함수의 리턴값
#튜플 리스트 활용
for a in enumerate(list):
print('{}번째 값: {}'.format(a[0], a[1]))
for a in enumerate(list):
print('{}번째 값: {}'.format(*a))
#튜플 딕셔너리 활용
for a in dict.items():
print('{}의 나이는:{}'.format(a[0], a[1]))
for a in dict.items():
print('{}의 나이는:{}'.format(*a))
while문
조건이 참인 경우 계속 실행하는 반복문
for 반복문으로 작성한 코드는 while 반복문으로 작성 할 수 있다.
patterns = ['가위','바위','보']
length = len(patterns)
i = 0
while i < length:
print(patterns[i]))
i = i + 1
for a in range(patterns):
print(pattern)
#For 문과 while문은 서로 바꿀수 있다. 그러나, 상황에 맞는 반복문을 사용하는 것이 좋다.ex 무한루프 같은 경우를 사용하거나, 변수조건을 주었을때
break
반복문을 종료시키는 기능
#continue
반복문의 나머지 부분을 보지 않고, 반복문의 처음으로 돌아가는 기능
break
반복문을 종료시키는 기능
list = [1,2,3,4,5,6,7,3,43,445]
for val in list:
if val % 3 == 0:
print(val)
break
continue
반복문의 나머지 부분을 보지 않고, 반복문의 처음으로 돌아가는 기능
list = [1,2,3,4,5,6,7,3,43,445]
for i in range(10):
if i%2 == 0: #list 중에서 2의 배수를 찾을때까지 되돌아가서 조건문 검색
continue
print(i)
예외처리(Try , Except)
try:
# 에러가 발생할 가능성이 있는 코드
except Exception: # 에러 종류
#에러가 발생 했을 경우 처리할 코드
try:
import my_module
except ImportError:
prunt("모듈이 없습니다)
#에외처리 대신 if else을 사용할수 있다.
예외를 처리할 이름을 모를경우
try:
list = []
print(list[0])
except: #그냥 아무것도 적지 않아두 된다.
print('에러가 발생했습니다')
try:
list = []
print(list[0])
except Exception as ex: # ex변수에 발생한 에러의 정보가 들어간다.
print('에러가 발생했습니다',ex)
사용자가 직접 에러를 일으키기(raise)
# raise Exception # 에러 종류
def rsp(mine,yours):
allowed = ['가위','바위','보']
if mine not in allowed:
raise ValueError #ValueError 에러를 발생시킨다.
if yours not in allowed:
raise ValueError
#가위바위보 승패를 판단하는 코드
try:
rsp('가위' , '바')
except ValueError:
print('잘못된 값을 입력했습니다')
논리연산(단락평가)
단락평가
논리연산에서 코드의 앞만 보고 값을 정할 수 있는 경우 뒤는 보지 않고 값을 결정
복잡한 코드를 단순하게 하는 방식
def return_false():
print('함수 return_false')
return False
def return_true():
print('함수 return_true')
return True
print("테스트1")
a = return_false()
b = return_true()
if a and b:
print(True)
else:
print(False)
print('테스트2')
if return_false() and return_true():
#처음이 False기 때문에 if문을 실행하지않고 else문 을 바로실행한다
print("True")
else:
print(False)
'''
테스트1
함수 return_false
함수 return_true
False
테스트2
함수 return_false
False
'''
bool 값과 논리연산
true, false
숫자 0을 제외한 모든 수 - true
빈 딕셔너리, 빈 리스트를 제외한 모든 딕셔너리, 리스트 - true
아무 값도 없다는 의미인 None - false
빈문자열을 제외한 모든 문자열 - true
valui = input('입력해주세요>') or '아무것도 못받앗다'
print('입력받은값>',value)
#값을 입력하면 일력한 값이나오고
#입력하지 않으면 뒤에 '아무것도 못받았다' 라는 문구가나옴
a = True or 1 #True 앞의 값이 True입니다.
b = False or 0 #0 앞의 값이 False이므로 뒤의 값을 따릅니다.
c = 0 or False #False 앞의 값이 0이므로 False입니다. 따라서 뒤의 값인 False를 따릅니다.
d = 1 or False #1 앞의 값이 1이므로 True입니다.
Slice
리스트나 문자열에서 값을 여러개 가져오는 기능
list = [0,1,2,3,4,5]
list[1] # 3
text = "hello world"
text[1] # 'e'
text[5] # 'o'
text[1:5] # 'ello'
'''
list[ 2: ] : 2번째부터 끝까지 반환
list[ : 2 ] : 처음부터 2번째 까지 반환
list[ : ] : 처음부터 끝까지 전부 반환
'''
list[1:3] # 1,2
list[0:2] # 0,2
list[2,len(list)] # 2,3,4,5
list[:] # 0,1,2,3,4,5
list #0,1,2,3,4,5
Reference
'Python' 카테고리의 다른 글
전화번호부 Python 예제 (0) | 2018.09.21 |
---|