Weekly I Learn- python 문법 뽀개기

Suding·2022년 10월 6일
0

변수와 문자열

a=2

b=3 

print (a+b) // 5 가 나온다
print (a> b) // false가 나온다 

a= '2' //문자열 or a=str(2) 
print (a+b) // 23가 나온다 

문자열 다루기 

1. 길이 재기 // 문자열의 길이를 재보자 
myemail= abc@sparta.com  
result =len(myemail)
print(result) // 11 이 출력된다 

2. 문자열 자르기 // 이메일의 도메인만 출력해 보자 
myemail= abc@sparta.com  
result = myemail.split('@')[1].split('.')[0]
print(result) // sparta가 출력 된다 

result = myemail[:3]// 앞에서 3번재 까지 보여줘 
print(result) //abc

result = myemail[3:] // 3번째 뒤 문자부터 보여줘
print(result) //@sparta.com

result = myemail[3:7]// 3~7째 까지 보여줘 
print(result) // @spa 
  • 어떠한 값을 담는 박스라고 볼수 있다. 여러가지 값 (정수, 문자열, true, false )등이 들어 갈수 있다)
  • 또는 컴퓨터가 기억하고 있는 메모리 공간 이라고 볼수 있다 (메모리에 올려져 있는 데이터를 가리키고 있다고 보면됨)

리스트와 딕셔너리

  • 리스트 : 순서가 있음
  • 딕셔너리: {key: value} 형식으로 데이터를 담고 있다
a_list = [3,2,1,4,5]
a_list.sort () 
print(a_list) // [1,2,3,4,5]

a_list.sort(rever=True)
print(a_list) //[5,4,3,2,1]

result = (99 in a_list)
print(result) // False 가 출력 된다 

//리스트와 딕셔너리의 조합 , smith 의 science 점수를 출력해 보자 
people = [
    {'name': 'bob', 'age': 20, 'score':{'math':90,'science':70}},
    {'name': 'carry', 'age': 38, 'score':{'math':40,'science':72}},
    {'name': 'smith', 'age': 28, 'score':{'math':80,'science':90}},
    {'name': 'john', 'age': 34, 'score':{'math':75,'science':100}}
]

print(people[2]['score']['science'] // 90 이 출력 된다 
// 2번째 리스트에서, 딕셔너리 score 안에 science의 값을 꺼낸다 

조건문, 반복문 , 함수

  • 조건문: if, else , elif
  • 반복문: for apple in apples :
  • 함수: def 함수명 ():
조건문+ 반복문 연습 
//짝수의 개수를 출력해 보자 
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count =0 
for num in num_list: 
	if num % 2==0 :
		count += 1
print(count) // 7개가 출력 된다 

// 리스트의 sum 을 구해 보자 
sum =0 
for num in num_list:
	sum += num 
print (sum)

//max 값을 구해 보자 
max_value=0 
for num in num_list:
	if num > max_value:
		max_value=num
print(max_value) // 6이 출력 된다 

// 함수를 사용해서 주민등록번호의 성별을 구분해 보자 
def check_gender(pin):
    num = pin.split('-')[1][:1] // 주민등록번호 2번째 리스트에 첫번째 번호로 구분해준다 
    if int(num) %2 == 0:        // '2'는 문자열이기 때문에 int()로 변환시켜준다
        print('women')
    else:
        print('men')

check_gender('12345-234343') // women
check_gender('12345-134343') // men
check_gender('12345-235343') // women

튜플과 집합

  • 튜플: 리스트와 같이 순서가 있지만 () 를 사용하고 리스트에 새로운 데이터를 추가할수 없는 불변형 이다
  • 집합: 교집합, 차집합, 합집합 구할 수 있다 . 중복이 제거된다
//교집합, 합집합, 차집합을 구해보자
student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

set_a= set(student_a) 
set_b= set(student_b)

print(set_a & set_b) // 교집합 {'수학1', '화학2', '체육'}
print(set_a | set_b) // 합잡합 {'체육', '화학2', '물리1', '화학1', '국어', '수학1', '미술', '물리2', '음악'}
print (set_a -set_b) // 차집합 {'화학1', '물리2', '국어', '음악'}

f-string

  • f-string: javascript 에서 temp literal 처럼 + 으로 붙여 쓰는것을 간편하게 해줌
//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= s['score']
	print= (f'{name}의 점수는 {score}입니다') // print (name+의 점수는 + score+ 입니다) 보다 간결함!

Try- except (예외처리)

  • try- except 는 에러가 있을때 코드가 종료되지 않고 에러로 예외 처리하고 실행해야 할때 사용한다
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}
]

for person in people :
	try:
			if person ['age'] >20:
					print (person['name'])
	except: 
			print(person['name'], 'error') 

// 나이가 20 이상인 이름들이 출력되고 bobby 에러입니다로 예외처리한뒤 나머지 이름을 출력한다 
// 서버에 에러가 있을 경우를 대비해서 사용하고 남용하면 안된다!

한줄로 코드 쓰기

// 삼항 연산자 (참일 때 값) if (조건) else (거짓일 때 값) 
num = 3

result = "짝수" if num%2 == 0 else "홀수"

print(f"{num}은 {result}입니다.")

// for 문 축약 법, a_list 각 요소에 2를 곱한 새로운 리스트를 만들 때 
a_list  = [1, 3, 2, 5, 1, 2]

b_list = [a*2 for a in a_list]

print(b_list)

maps , lambda, filter

  • map: 리스트의 요소를 지정된 함수로 처리해 준다
  • lambda: 람다 표현식은 익명 함수로 다른 함수의 인수로 넣을 때 사용된다
  • filter: 리스트의 모든 원소 중 특별한 것만 뽑기, true 인 값만 출력
// people 에서 age 가 20 이상이면 성인, 이하면 청소년인 값을 새로운 리스트로 만들어 보자 
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 27},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]

def check_adult(person):
    return '성인' if person['age'] > 20 else '청소년' //삼항 연산자 활용해서 코드를 한줄로 줄이자

result = map(check_adult, people) // map을 사용해서 people이라는 리스트를 check_adult 함수를 돌려보자 
print(list(result)) // result를 리스트로 뽑자 ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']

// 람다를 사용하면 코드를 한줄로 줄일 수 있다. 람다 형식에 나이로 성인과 청소년을 구분할 수 있는 함수를 적용하고, map 으로 리스트의 각요소를 람다 함수로 적용한다 
result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result)) // ['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']

//필터를 사용해 성인만 리스트로 뽑아보자. filter(lambda x:x(함수), list) 
result = filter(lambda x: x['age'] > 20, people)
print(list(result))

클래스

  • 메서드 (method) : 클래스 안에 들어있는 함수. 메서트의 첫 번째 매개변수는 반드시 self 지정 필요
  • instance: method를 호출할때 instance를 사용한다
class 클래스이름:
    def 메서드(self):
        코드

instance = class()
instance.method() // 코드 값 프린드 

// 게임에서 몬스터의 HP 관리를 해보자. 각각의 몬스터별로 hp와 상태를 확인한다
class Monster():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def status_check(self):
        if self.alive:
            print('살아있다')
        else:
            print('죽었다')

m = Monster()
m.damage(120) 

m2 = Monster()
m2.damage(90) 

m.status_check() // 죽었다
m2.status_check()// 살았다 
  • 게임 캐릭터를 클래스로 표현해보자

Untitled

profile
웹개발자가 되고 싶은 수딩의 코딩 일지

0개의 댓글