슈코딩
[Python] 문법 복습 심화 학습 본문
1. Python 문법 복습 학습
1) 문자열 다루기
int() : 문자열을 정수로 변환
str() : 숫자를 문자열로 변환 string 약자
len() : 문자열의 길이 측정
text = 'abcdefghik'
result = text[:3]
#텍스트의 3번째까지 자르기
result = text[3:]
#텍스트의 3번째이후부터 자르기
result = text[3:8]
#텍스트의 3번째이후부터 8번째까지 자르기
2) 리스트
a_list = [1,5,6,3,2,4]
a_list .sort()
#정렬
a_list.sort(reverse=True)
#내림차순 정렬
result = (99 in a_list)
# a_list 안에 99가 있는지 없는지 판단
#있으면 True 없으면 False
3) 딕셔너리
a_dict = {'name':'shu', 'age':27, 'friend':['bob','tong']}
#딕셔너리 형태
a_dict['height'] = 180
#딕셔너리 추가
result = ('height' in a_dict)
#딕셔너리에 'height' 있는지 확인 있으면 True, else False
people = [{'name':'bob', 'age':23},{'name':'shu', 'age':27}]
#리스트 안의 딕셔너리가 들어간 형태
4) 조건문if 와 반복문 for in
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
]
for person in people:
name = person['name']
age = person['age']
if age > 20 :
print (name, age)
#조건문과 반복문을 이용해 리스트안의 21세이상인 사람의 이름과 나이 출력
for i, person in enumerate(people):
name = person['name']
age = person['age']
print(i, name, age)
if i > 2:
break # i의순서가 2보다 커진순간 멈춰라!
#10000줄이상 혹은 비슷하게 많은데이터가 있을때 유용한 방법
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for num in num_list:
if num % 2 == 0:
print(num)
#짝수만 출력하기
count = 0
for num in num_list:
if num % 2 == 0:
count += 1
print(count)
#짝수인 수의 갯수세기
result = 0
for num in num_list:
result += num
print(result)
#혹은
print(sum(num_list))
#리스트 안의 수 다더하기
max = 0
for num in num_list:
if max < num :
max = num
print(max)
#혹은
print(max(num_list))
#리스트안의 가장 큰수 구하기
5)함수
def check_gender(pin):
num = int(pin.split('-')[1][:1])
if num % 2 == 0:
print('여성입니다')
else:
print('남성입니다')
my_pin = '200101-3012345'
check_gender(my_pin)
# 주민번호 앞자리로 성별체크
6) 심화 문법
#튜플, 집합
#튜플 불변형 리스트 추가, 수정 불가능
a = ('사과','감','배')
#집합 중복이 제거되서 나옴
a = [1,2,3,4,3,2,3,4,5,8,7,1]
a_set = set(a)
print(a_set)
#교집합
a = ['사과','감','배','수박','딸기']
b = ['배','사과','포도','참외','수박']
a_set = set(a)
b_set = set(b)
print(a_set & b_set)
#합집합
print(a_set|b_set)
#차집합
print(a_set - b_set)
# f -string
scores = [
{'name':'영수','score':70},
{'name':'영희','score':65},
{'name':'기찬','score':75},
{'name':'희수','score':23},
{'name':'서경','score':99},
{'name':'미주','score':100},
{'name':'병태','score':32}
]
for s in scores:
name = s['name']
score = str(s['score'])
print(f'{name}의 점수는 {score}점입니다.')
#결과 00의 점수는 00점입니다 출력
#예외처리
people = [
{'name': 'bob', 'age': 20},
{'name': 'carry', 'age': 38},
{'name': 'john', 'age': 7},
{'name': 'smith', 'age': 17},
{'name': 'ben', 'age': 27},
{'name': 'bobby'},
{'name': 'red', 'age': 32},
{'name': 'queen', 'age': 25}
]
# 위 리스트안의 bobby의 나이값이 없을경우 에러가 난다.
그래서 Try 구문을 이용
for person in people:
try:
if person['age'] > 20:
print(person['name'])
except:
print(person['name'],'에러입니다')
#에러가 났을경우 찾아가기 용이 하지만 남용하면 오히려 문제가 더생길수있다.
#한줄 줄여쓰기 if문 for문
#if문
num = 3
result = ("짝수" if num%2 == 0 else "홀수") #()없어도 됨.
print(f"{num}은 {result}입니다.")
#for문
a_list = [1, 3, 2, 5, 1, 2]
b_list = [a*2 for a in a_list]
#a_list안에 있는 a를 돌리는데 그때마다 x2를 해서 리스트로 묶어라
print(b_list)
# map, lambda, filter
#map 리스트를 돌면서 나이에따라 20이 넘으면 성인, 낮으면 청소년 그리고 그값을 리스트로 출력
def check_adult(person):
return '성인' if person['age'] > 20 else '청소년'
result = map(check_adult, people)
print(list(result))
#lambda 위에 함수도 없애고 한줄로 더 간단하게 만든 같은결과 출력
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))
#map과 유사한데 True인것만 출력!
result = filter(lambda x: x['age'] > 20, people)
print(list(result))
#함수 심화 (매개변수) 알아만 두자 - 라이브러리의 코드를 분석해보면 많이쓰여있다.(직접 쓸일 잘없음)
# 매개변수에 어떤 값을 넣을지 정해줄수있고, 순서 상관x
def cal(a, b):
return a + 2 * b
print(cal(3, 5))
print(cal(5, 3))
print(cal(a=3, b=5))
print(cal(b=5, a=3))
#특정 매개변수에 디폴트 값을 지정가능 매개변수에 값을 넣으면 넣은걸로, 안넣으면 디폴트값으로
def cal2(a, b=3):
return a + 2 * b
print(cal2(4))
print(cal2(4, 2))
print(cal2(a=6))
print(cal2(a=1, b=7))
#입력값의 개수 지정x 무제한
def call_names(*args):
for name in args:
print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')
#키워드 인수를 여러개 받는 법, 딕셔너리로 만들어준다.
def get_kwargs(**kwargs):
print(kwargs)
get_kwargs(name='bob')
get_kwargs(name='john', age='27')
# class
class Monster():
hp = 100
alive = True
def damage(self, attack):
self.hp = self.hp - attack
if self.hp < 0:
self.alive = False
# 몬스터 체력이 100 각각의 몬스터에게 체력을 따로주고 그 체력이 0이되면 각몬스터가 죽은상태가 된다
def status_check(self):
if self.alive:
print['살았다!']
else:
print['죽었다!']
m1 = Monster()
m1.damage(150)
m1.status_check()
#결과는 죽었다! 여기서 m1은 인스턴스 (몬스터 한마리) 라고한다.
'코딩공부 > Python' 카테고리의 다른 글
[Python] PEP8 스타일 (0) | 2022.06.29 |
---|---|
Python & DB & Web Scraping (1) | 2022.04.19 |
[Python] 계산기 만들기 (0) | 2022.04.17 |
Comments