[Python] 파이썬 정리 3 - 변수, 연산자, 집합형 자료, 정규 표현식, 조건 판단문 if문, 반복문 while, 반복문 for
1. 변수
2. 연산자
3. 집합형 자료
4. 정규 표현식
5. 조건 판단문 if문
6. 반복문 while
7. 반복문 for
1. 변수 : 기본형 X, 참조형 O
id(a) : 주소확인 함수
is : 주소 비교, == : 값 비교
a=1
b=1.2
c=b
print(a,b,c)
print(id(a), id(1), id(b), id(c)) # id(a) : 주소확인 함수,
# 140710866855712 140710866855712 2553731934640 2553731934640
print(a is b, a==b) # is : 주소 비교, == : 값 비교
#False False
print(b is c, b==c)
#True True
- 주석
#한줄 주석
"""
여러줄 주석
"""
'''
여러줄 주석
'''
- 출력
print('hello')
var1 = 'hi'
var1 = 10
print(var1)
대소문자 구분
A = 1;
a = 2;
print(A, a, A==a) # 1 2 False
변수명으로 키워드 사용 불가
for = 5 # error
import : 외부모듈 읽기 - 설치된 모듈 로딩
import keyword
# keyword.kwlist : 키워드 리스트 출력
print(keyword.kwlist)
# ['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']
oct(a) : 8진수, hex(a) : 16진수, bin(a) : 2진수
print(10, oct(10), hex(10), bin(10)) # 10 0o12 0xa 0b1010
print(10,0o12, 0xa, 0b1010) # 10 10 10 10
type(a) : type 확인
print(3, type(3)) # int
print(3.4, type(3.4)) # float
print(3+4j, type(3+4j)) # complex
print(True, type(True)) # bool
print('aa', type('aa')) # str
print("abc", type("abc")) # str
isinstance(a, b) : 객체 type 확인 함수
print(isinstance(1, int)) # True
print(isinstance(1.2, int)) # False
집합형 자료형
print((1), type((1))) # int. 집합형 자료형X
print((1,), type((1,))) # tuple
print([1], type([1])) # list
print({1}, type({1})) # set
print({'k':1}, type({'k':1})) # dict
2. 연산자
print(a, end=' ')
v1 = 123
v3 = v2 = v1 # 치환
print(v1, v2, v3) # 123 123 123
print('입니다') # 자동 줄바꿈
print(v1, v2, v3, end='---') # 자동 줄바꿈X
print('입니다') # 123 123 123---입니다
v4 = 1,2,3
print(v4, type(v4)) # (1, 2, 3) <class 'tuple'>
print(v4, \
type(v4)) # \ : 명령이 이어짐.
swap
v1, v2 = 100, 200
print(v1, v2) # 100 200
v2, v1 = v1, v2
print(v1, v2) # 200 100
packing - 값할당 연산
v1, v2 = [1, 2, 3, 4, 5] # 불가
v1, *v2 = [1, 2, 3, 4, 5]
print(v1, v2)
*v1, v2 = [1, 2, 3, 4, 5]
print(v1, v2)
*v1, v2, v3 = [1, 2, 3, 4, 5]
*v1, *v2, v3 = [1, 2, 3, 4, 5] # 불가
print(v1, v2, v3)
산술, 관계, 논리
print(5 + 3, 5 - 3, 5 * 3, 5 / 3)
// : 몫 , % : 나머지, divmod() : 몫/나머지
print(5 / 3, 5 // 3, 5 % 3, divmod(5, 3)) # 1.6666666666666667 1 2 (1, 2)
( ) > 산술(*,/ > +,-) > 관계 > 논리> 치환
print(3 + 4 * 5, (3 + 4) * 5) # 23 35.
관계 연산자
print(5 > 3, 5 == 3, 5 != 3, 5 <= 5)
논리 연산자 and, or, not(a)
print(5 > 3 and 4 <=3, 5 > 3 or 4 < 3 , not(5 >= 3))
print('강남' + '거리' + 2021) # TypeError
str(a) : 문자로 형변환, int(a) : 숫자로 현변환
print('강남' + '거리' + str(2021) + ' ' + '2000' + '21' + str(int('2000') + int('21')))
문자열 연산
print('답' * 10)
print('----------' * 10)
a = 5
a = a + 1
a += 1 # a++, ++a, a--, --a 증감연산자 사용 불가.
print('a : ' + str(a))
부호 변경
print(a, a * -1, -a, --a, +a, ++a) # 7 -7 -7 7 7 7
False
print('boolean : ', bool(False), bool(0), bool(0.0), bool(''), bool(None), bool([]), bool({}), bool(set()))
True
print('boolean : ', bool(True), bool(1), bool(-12), bool(1.5), bool('aa')) # True True True True True
이스케이프 문자 : \n, \b, \t ...
print('aa\tbb')
print('aa\nbb')
print('c:\aa\nbc\cc.txt')
print(r'c:\aa\nbc\cc.txt') # r'' : 이스케이프 문자로 해석하지않음.
format()
print(format(1.5678, '10.3f'))
print('나는 나이가 %d 이다.'%23)
print('나는 나이가 %s 이다.'%'스물셋')
print('나는 나이가 %d 이고 이름은 %s이다.'%(23, '홍길동'))
print('나는 나이가 %s 이고 이름은 %s이다.'%(23, '홍길동'))
print('나는 키가 %f이고, 에너지가 %d%%.'%(177.7, 100))
print('이름은 {0}, 나이는 {1}'.format('한국인', 33))
print('이름은 {}, 나이는 {}'.format('신선해', 33))
print('이름은 {1}, 나이는 {0}'.format(34, '강나루'))
3. 집합형 자료
- 문자열 자료형 - 순서 존재, 수정 불가X
len(a) : a의 길이
s1.count('a') : s1에서 a 개수
s = 'sequence' # "sequence" 동일. """sequence""""
print(s)
print(len(s), s.count('e')) # 8 3
- 문자열 관련 함수
s1.find('a') : s1에서 앞에서 부터 가장 앞의 a의 index
s1.find('a', 3) : s1에서 앞에서 부터 3번째 a의 index
s1.rfind('a') : s1에서 뒤에서 부터 a의 index
print(s.find('e'), s.find('e', 3), s.rfind('e')) # 1 4 7
ss = 'kbs'
print(ss, id(ss)) # 1847323654896
ss = 'sbs' # 변수의 값이 변경되는 것이 아닌, 새로운 객체 생성.
print(ss, id(ss)) # 1847326686384
- 슬라이싱 : 집합형 자료의 일부 요소만 참조
s[1:6:2] : 1번부터 5번까지 2간격 문자
print(s, s[0], s[2:4], s[3:]) # sequence s qu uence
print(s[-1], s[-4:-1], s[1:6:2]) # e enc eun
s[0] = 'k' # TypeError: 'str' object does not support item assignment
s.split(sep=' ') : 구분자를 기준으로 나눠 리스트로 리턴
ss2 = 'kbs mbc'
ss3 = ss2.split(sep=' ') # ['kbs', 'mbc']
s1.join(s2) : s2의 리스트 사이에 s1을 넣어 결합하여 리턴
print(":".join(ss3)) # kbs:mbc
s1.replace(s2, s3) : s1에서 s2를 s3로 변경하여 리턴
a = 'life is too short'
b = a.replace("life", "java") # java is too short
- list 타입 : 순서 O, 변경O, 여러종류의 값을 기억, [요소1, 요소2, ...], 배열과 유사
family = ['mother', 'father', 'me', 123, 12.345]
print(type(family)) # list
str1.append(str2) : str1에 str2 추가
str1.insert(a, str2) : str1의 a번째에 str2 삽입
str1.remove(str2) : str1에서 str2 제거
str1.index(str2) : str1에 str2 index
str1[0] = str2 : str1의 0번째 index값 str2로 변경
family.append(['삼촌', '고모']) # ['mother', 'father', 'me', 123, 12.345, ['삼촌', '고모']]
family.append('이모') # ['mother', 'father', 'me', 123, 12.345, ['삼촌', '고모'], '이모']
family.insert(0, '할머니') # ['할머니', 'mother', 'father', 'me', 123, 12.345, ['삼촌', '고모'], '이모']
family += ['아저씨']
# ['할머니', 'mother', 'father', 'me', 123, 12.345, ['삼촌', '고모'], '이모', '아저씨']
family.remove('이모')
print(family, len(family), family.index('father'))
# ['할머니', 'mother', 'father', 'me', 123, 12.345, ['삼촌', '고모'], '아저씨'] 8 2
print(family[0], family[1:4]) # 할머니 ['mother', 'father', 'me']
print(family[6], family[6][1]) # ['삼촌', '고모'] 고모
family[0] = '할아버지' # ['할아버지', 'mother', 'father', 'me', 123, 12.345, ['삼촌', '고모'], '아저씨']
- Tuple 타입 : 순서 O, 변경X, 읽기 전용, (요소1, 요소2, ...), 속도가 빠름, 리스트와 유사
t =('a', 'b', 'c', 'd', 'a')
t ='a', 'b', 'c', 'd', 'a'
print(t, type(t), len(t), t.count('a'))
# ('a', 'b', 'c', 'd', 'a') <class 'tuple'> 5 2
print(t[1], t[2:5])
# b ('c', 'd', 'a')
t[1] = 'k' # TypeError: 'tuple' object does not support item assignment
list(a) : list타입으로 변경
tuple(a) : tuple타입으로 변경
temp = list(t) # 형변환 후 값 변경 가능.
print(temp)
temp[1] = 'k'
t = tuple(temp)
print(t, type(t))
# ('a', 'k', 'c', 'd', 'a') <class 'tuple'>
swap
t1 = (10,)
t1 = (10,20)
a, b = t1
b, a = a, b
t2 = a, b
print(t2)
# (20, 10)
- Set 타입 : 순서X, 변경 X, 중복X, {요소1, 요소2, ...}
a.union(b) : 합집합( | )
a.intersection(b) : 교집합( & )
a.update({6, 7}) : a에 합집합하여 a에 반영
a.discard(b) : a에서 b 제거(없어도 정상진행)
a.remove(b) : a에서 b 제거(a에서 b 없으면 error)
a.clear() : a 집합 비움
a = {1, 2, 3, 1}
print(a, type(a), len(a))
#print(a[0]) # TypeError: 'set' object is not subscriptable
b = {3, 4}
print(a.union(b), a.intersection(b)) # {1, 2, 3, 4} {3}
print(a | b, a & b, a - b) # {1, 2, 3, 4} {3} {1, 2}
b.update({6, 7})
# {3, 4, 6, 7}
b.update([8, 9])
# {3, 4, 6, 7, 8, 9}
b.discard(b)
b.remove(7) # 없으면 Error
b.clear() # set()
중복제거
set(a) : set타입으로 변경
li =[1,2,3,3,4,5,5,5,3,2,1]
print(li)
temp = set(li)
li = list(temp) # [1, 2, 3, 4, 5]
- Dict 타입 : 순서X, {key1 : value1, key2 : value2, ... }
dic['key'] = 'value'
del dic['key']
dic.keys()
dic.get('key)
mydic = dict(k1=1, k2='kbs', k3=1.23)
print(mydic, type(mydic)) # {'k1': 1, 'k2': 'kbs', 'k3': 1.23} <class 'dict'>
dic = {'파이썬':'뱀', '자바':'커피', '스프링':'봄'}
print(dic, type(dic)) # {'k1': 1, 'k2': 'kbs', 'k3': 1.23} <class 'dict'>
print(dic['자바']) # 키로 값을 참조
print(dic['커피']) # 값으로 참조 불가
dic['겨울'] = '눈' # 값 추가
# {'파이썬': '뱀', '자바': '커피', '스프링': '봄', '겨울': '눈'}
del dic['겨울'] # 값 제거
# {'파이썬': '뱀', '자바': '커피', '스프링': '봄'}
dic.clear()
# {}
dic = {'파이썬':'뱀', '자바':'커피', '스프링':'봄'}
print(dic.keys()) # dict_keys(['파이썬', '자바', '스프링'])
print(dic['자바']) # 커피
print(dic.get('자바')) # 커피
4. 정규 표현식
: 특정한 규칙을 가진 문자열의 집합을 표현하는 데 사용하는 형식 언어
* test4
import re
from re import IGNORECASE
ss = '1234 abc가나다ABC_555_6_789_555kbs가나 다라 가나 정규 표현식 특정한 규칙'
print(ss)
print(re.findall(r'123', ss)) # ['123']
print(re.findall(r'가나', ss)) # ['가나', '가나', '가나']
print(re.findall(r'[0,1,3]', ss)) # ['1', '3']
print(re.findall(r'[0,1,5]', ss)) # ['1', '5', '5', '5', '5', '5', '5']
print(re.findall(r'[0-9]', ss)) # ['1', '2', '3', '4', '5', '5', '5', '6', '7', '8', '9', '5', '5', '5']
print(re.findall(r'[0-9]+', ss)) # ['1234', '555', '6', '789', '555']
print(re.findall(r'[0-9]?', ss)) # ['1', '2', '3', '4', '', '', '', '', '', '', '', '', '', '', '', '5', '5', '5', '', '6', '', '7', '8', '9', '', '5', '5', '5', '', '', '', '', '', '', '', '', '', '', '', '']
print(re.findall(r'[a-z, A-Z]+', ss)) # [' abc', 'ABC', 'kbs', ' ', ' ', ' ', ' ']
print(re.findall(r'[가-힣]+', ss)) # ['가나다', '가나', '다라', '가나', '정규', '표현식']
print(re.findall(r'[가-힣]{2}', ss)) # ['가나', '가나', '다라', '가나', '정규', '표현']
print(re.findall(r'[가-힣]{2,3}', ss)) # ['가나다', '가나', '다라', '가나', '정규', '표현식', '특정한', '규칙']
print(re.findall(r'[^0-9]+', ss))
print(re.findall(r'^1', ss)) # 첫글자가 1
print(re.findall(r'^2', ss))
print(re.findall(r'칙$', ss)) # 마지막 글자가 칙
print(re.findall(r'\d', ss)) # 숫자
print(re.findall(r'\d{2}', ss))
print(re.findall(r'\d{2,3}', ss))
5. 조건 판단문 if문
* test5_if
- if
var = 4
if var >=3:
print('큼')
- if else
if var >=3:
print('큼')
else:
print('거짓')
- 다중 if
money = 1000
age = 22
if money >= 500:
item = '사과'
if age <= 30:
msg = 'yong'
else:
msg = 'old'
else:
item = '한라봉'
if age <= 20:
msg = 'YB 한라봉'
else:
msg = 'OB 한라봉'
print(item, msg)
- elif
score = 85
if score >= 90:
print('우수')
else:
if score >= 70:
print('일반')
else:
print('노력')
if score >= 90:
print('우수')
elif score >= 70:
print('일반')
else:
print('노력')
- input
score = int(input('점수입력:'))
if 90 <= score <= 100:
print('우수')
elif 70 <= score <90:
print('일반')
else:
print('노력')
- if in
if a in str:
str에 a가 있을경우 실행
name = ['홍길동', '김길동', '이길동']
if '홍길동2' in name:
print('freind')
else:
print('dont know')
- 한줄 if else
(참일때 출력문) if (조건) else (거짓일때 출력문)
a = 'kbs'
b = 9 if a == 'kbs' else 11
print(b)
a = 11
b = 'mbc' if a == 9 else 'kbs'
print(b)
(참일때 출력문, 거짓일때 출력문) [조건]
a = 3
result = 0
if a > 5:
result = a * 2
else :
result = a + 2
print(result) # 5
result = a * 2 if a > 5 else a + 2
print(result) # 5
print((a + 2, a* 2)[a > 5]) # 5
print(int(True), int(False)) # 1 0
6. 반복문 while
* test5_while
a = 1
while a <= 5:
print(a, end = ' ')
a += 1
# 1 2 3 4 5
print('\na: ', a) # a: 6
i = 1
while i <= 3:
j = 1
while j <= 4:
print('i:'+str(i)+'/j:'+ str(j))
j = j + 1
print('-----')
i += 1
# i:1/j:1
# i:1/j:2
# i:1/j:3
# i:1/j:4
# -----
# i:2/j:1
# i:2/j:2
# i:2/j:3
# i:2/j:4
# -----
# i:3/j:1
# i:3/j:2
# i:3/j:3
# i:3/j:4
- 1 ~100 사이의 3의 배수의 합
i = 1; sum = 0;
while i <= 100:
if i % 3 == 0:
sum += i
i += 1
print('합은 '+str(sum)) # 합은 1683
str1.pop() : str1에서 가장 마지막 값 방출
colors = ['r', 'g', 'b']
print(colors)
print(colors[1])
a = 0
while a < len(colors):
print(colors[a], end = ' ') # r g b
a += 1
while colors:
print(colors.pop(), end = ' ') # b g r. LIFO
- 별찍기
i = 0
while i <= 10:
j = 1
re = ' '
while j <= i:
re = re + '*'
j = j + 1
print(re)
i = i + 1
# *
# **
# ***
# ****
# *****
# ******
# *******
# ********
# *********
# **********
i = 0
while i <= 10:
j = 1
re = ' '
while j <= i:
re = re + ' '
j = j + 1
k = 1
while k <= 11 - j:
re = re + '*'
k = k + 1
print(re)
i = i + 1
# **********
# *********
# ********
# *******
# ******
# *****
# ****
# ***
# **
# *
- if 블럭 내에 while 블럭 사용
import time
time.sleep(1) : sleep
import time
sw = input('폭탄 스위치를 누를까요?[y/n]')
if sw == 'Y' or sw == 'y':
count = 5
while 1 <= count:
print('%d 초 남음'%count)
time.sleep(1)
count -= 1
print('boom!')
elif sw == 'N' or sw == 'n':
print('작업취소')
else:
print('y 또는 n을 누르시오')
* test5_while2
- continue, break
a = 0
while a < 10:
a += 1
if a == 5:continue
if a == 7:break
print(a, end=' ')
else: # phython만 존재
print('while 정상 수행') # while문 정상 완료 후 1회 수행. break 실행시 출력되지않음
# 1 2 3 4 6
print('while 수행 후 %d'%a) # while 수행 후 7
- 홀수, 짝수 확인
while True:
a = int(input('숫자입력:'))
if a == 0:
print('while문을 빠져나갑니다.')
break
elif a % 2 == 0: # 짝수
print('%d는 짝수'%a)
elif a % 2 == 1: # 홀수
print('%d는 홀수'%a)
7. 반복문 for
* test6_for
for i in [1, 2, 3, 4, 5]: # list :
print(i, end = ' ')
# 1 2 3 4 5
print()
for i in (1, 2, 3, 4, 5): # tuple
print(i, end = ' ')
# 1 2 3 4 5
print()
for i in {1, 2, 3, 4, 5, 5, 5}: # set
print(i, end = ' ')
# 1 2 3 4 5
str.items() : tuple로 key, value 리턴
sort = {'java':'웹용', 'python':'만능언어','java script':'컨텐츠 제작용'}
for i in sort.items(): # str.items() : tuple로 리턴
print(i)
print(i[0] + '- '+i[1])
# ('java', '웹용')
# java- 웹용
# ...
for k, v in sort.items():
print(k)
print(v)
# java
# 웹용
# python
# 만능언어
# java script
# 컨텐츠 제작용
- str.values() : value값 리턴
for k in sort.values():
print(k, end = ' ')
# 웹용 만능언어 컨텐츠 제작용
- 2, 3단 출력
for n in [2 ,3]:
print('--{}단--'.format(n))
for su in [1,2,3,4,5,6,7,8,9]:
print('{0} * {1} = {2}'.format(n, su, n*su), end = '\t')
print()
enumerate(a) : index와 요소값 리턴
li = ['a', 'b', 'c']
li = ('a', 'b', 'c')
li = {'a', 'b', 'c'} # 순서 없음. 무작위
for ind, data in enumerate(li):
print(ind, data)
# 0 a
# 1 b
# 2 c
- continue, break
datas = [1,2,3,4,5]
for i in datas:
if i == 3:
continue
if i == 5:
break
print(i, end = ' ')
else:
print('정상 처리') # break 실행시 출력되지않음
- for문 내부에 if문 사용
score = [95,70,60,50,100]
num = 0
for j in score:
num += 1
if j < 70: continue
print('%d번째 점수는 합격'%num)
# 1번째 점수는 합격
# 2번째 점수는 합격
# 5번째 점수는 합격
- 이중 for문
li1 = [3,4,5]
li2 = [0.5,1,2]
for a in li1:
for b in li2:
print(a + b, end = ' ') # 3.5 4 5 4.5 5 6 5.5 6 7
[실행문 for 변수1 in list1 for 변수2 in list2] : list1의 첫번째 요소와 list2의 첫번째 요소 실행문 실행 -> list1의 두번째 요소와 list2의 첫번째 요소 실행문 실행 -> ...
print([a + b for a in li1 for b in li2])
datas = [a + b for a in li1 for b in li2]
for d in datas:
print(d, end = ' ') # 3.5 4 5 4.5 5 6 5.5 6 7
- 정규 표현식
re.sub(r"[^가-힣\s]", "", ss) : ss에서 패턴과 일치는 값을 ""로 대체
import re
ss = '''
이재명 경기도지사는 8일 일각에서 제기되는 탈당설에 대해 “민주당 지지자들이 압도적으로 응원하는데 왜 나가느냐”고 강력 부인했다.
이 지사는 이날 OBS 방송에 출연해 ‘일부에서 탈당설이 제기되고 있다’는 질문에 “2005년부터 16년간 민주당 당원인데 왜 탈당하느냐”면서 이같이 반문했다.
이 지사는 이날 OBS 방송에 출연해 ‘일부에서 탈당설이 제기되고 있다’는 질문에 “2005년부터 16년간 민주당 당원인데 왜 탈당하느냐”면서 이같이 반문했다.
이 지사는 이날 OBS 방송에 출연해 ‘일부에서 탈당설이 제기되고 있다’는 질문에 “2005년부터 16년간 민주당 당원인데 왜 탈당하느냐”면서 이같이 반문했다.
아울러 이 지사는 ‘정세균 총리 이외에도 당내 제3후보론이 나오는데 섭섭하지 않으냐’는 질문에는 “저는 안 섭섭하다. 섭섭할 사람은 (대선주자 선호도) 2등 하시는 분일 것”이라며
이 지사는 이날 OBS 방송에 출연해 ‘일부에서 탈당설이 제기되고 있다’는 질문에 “2005년부터 16년간 민주당 당원인데 왜 탈당하느냐”면서 이같이 반문했다.
이 지사는 이날 OBS 방송에 출연해 ‘일부에서 탈당설이 제기되고 있다’는 질문에 “2005년부터 16년간 민주당 당원인데 왜 탈당하느냐”면서 이같이 반문했다.
“저는 누군가는 상대해야 하는데, 저보다는 대체 당할 수 있는 분이 억울할 것”이라고 했다.
'''
ss2 = re.sub(r"[^가-힣\s]", "", ss) # 한글만 parsing
print(ss2)
ss3 = ss2.split(' ') # 공백 기준 단어를 나눔
print(ss3)
cnt = {} # 단어의 발생횟수를 dict로 저장
for n in ss3:
if n in cnt: # count있을 경우 ++
cnt[n] += 1
else:# 없을 경우 1
cnt[n] = 1
print(cnt)
# {'\n이재명': 1, '경기도지사는': 1, '일': 1, '일각에서': 1, '제기되는': 1, '탈당설에': 1, '대해': 1, '민주당': 6, '지지자들이': 1, '압도적으로': 1, '응원하는데': 1, '왜': 6, '나가느냐고': 1, '강력': 1, '부인했다\n이': 1, '지사는': 6, '이날': 5, '': 5, '방송에': 5, '출연해': 5, '일부에서': 5, '탈당설이': 5, '제기되고': 5, '있다는': 5, '질문에': 5, '년부터': 5, '년간': 5, '당원인데': 5, '탈당하느냐면서': 5, '이같이': 5, '반문했다\n이': 3, '반문했다\n아울러': 1, '이': 1, '정세균': 1, '총리': 1, '이외에도': 1, '당내': 1, '제후보론이': 1, '나오는데': 1, '섭섭하지': 1, '않으냐는': 1, '질문에는': 1, '저는': 1, '안': 1, '섭섭하다': 1, '섭섭할': 1, '사람은': 1, '대선주자': 1, '선호도': 1, '등': 1, '하시는': 1, '분일': 1, '것이라며\n이': 1, '반문했다': 1, '\n저는': 1, '누군가는': 1, '상대해야': 1, '하는데': 1, '저보다는': 1, '대체': 1, '당할': 1, '수': 1, '있는': 1, '분이': 1, '억울할': 1, '것이라고': 1, '했다\n': 1}
re.match(r'^\d{3}-\d{4}$', str1) : str1에서 패턴과 일치하면 true
for ss in ['111-1234', '일이삼-사오육칠', '123-1234']:
if re.match(r'^\d{3}-\d{4}$', ss):
print(ss, '전화번호 일치')
else:
print(ss, '전화번호 불일치')
str1 = sorted(str2) : 정렬값 리턴
str1.sort() : 정렬하여 str1에 반영
from time import localtime
print(localtime())
# time.struct_time(tm_year=2021, tm_mon=2, tm_mday=9, tm_hour=11, tm_min=12, tm_sec=1, tm_wday=1, tm_yday=40, tm_isdst=0)
act = {6:'잠', 9:'준비', 18:'공부', 24:'휴식'}
print(act)
hour = localtime().tm_hour
for act_time in sorted(act.keys()):
if hour < act_time:
print(act[act_time])
break
#else:
#print('알수없음')
- 과일값 계산하기
price = {'사과':3000, '감':500, '한라봉':1000}
guest = {'사과':2, '감':3}
bill = sum(price[f]* guest[f] for f in guest)
print('손님이 구매한 과일의 총액은 {}원'.format(bill)) # 손님이 구매한 과일의 총액은 7500원
datas = [1, 2, 'kbs', True, 3]
li = [i * i for i in datas if type(i) == int]
print(li) # [1, 4, 9]
datas = {1,1,2,2,3}
se = {i * i for i in datas}
print(se) # {1, 4, 9}
- key-value swap
id_name = {1:'tom', 2:'jonh'}
name_id = {val:key for key, val in id_name.items()}
print(name_id) # {'tom': 1, 'jonh': 2}
aa = [(1,2), (3,4), (5,6)]
for a, b in aa:
print(a + b, end = ' ') # 3 7 11
temp = [1,2,3]
temp2 = [i + 10 for i in temp]
print(temp2) # [11, 12, 13]
- range() : 수열 생성
print(list(range(1,6))) # [1, 2, 3, 4, 5]
print(set(range(1,6))) # {1, 2, 3, 4, 5}
print(tuple(range(1,6))) # (1, 2, 3, 4, 5)
print(list(range(1,11,3))) # [1, 4, 7, 10]
print(list(range(-10,-200,-30))) # [-10, -40, -70, -100, -130, -160, -190]
for i in range(6):
print(i, end = ' ') # 0 1 2 3 4 5
print()
tot = 0
for i in range(1, 50, 2):
print(i, end = ' ') # 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49
tot += i
print()
print('결과는 ' + str(tot))
print('결과는 ' + str(sum(range(1, 50, 2))))
- 구구단 2~5단
for i in range(2, 5):
for j in range(1, 9):
print('{0} * {1} = {2}'.format(i,j,i*j), end = '\t')
print()
- 1 ~ 100 사이의 숫자 중 3의 배수이면서 5의 배수인 수들의 합 출력
tot = 0
for i in range(1, 101):
#print(i, end = ' ')
if i % 3 == 0 and i % 5 == 0:
tot = tot + i
print('합은', tot) # 합은 315
- N - gram : 문자열에서 n개의 연속된 요소를 추출하는 방법
- 글자별 n-gram : 2- gram
ss = 'hello'
for i in range(len(ss) -1):
print(ss[i], ss[i+ 1], sep = ' ')
# h e
# e l
# l l
# l o
- 단어별 n-gram : 2- gram
ss2 = 'this is python script'
words = ss2.split()
for i in range(len(words) -1):
print(words[i], words[i+ 1], sep = ' ')
# this is
# is python
# python script