슈코딩

[Python] 문법 복습 심화 학습 본문

코딩공부/Python

[Python] 문법 복습 심화 학습

Roshu 2022. 4. 25. 16:02

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