TIL - 22.11.08(파이썬 강의)

0

TIL

목록 보기
7/126

배운거

파이썬(python)

-. 파이썬을 설치한다 : 번역팩을 설치 했다
-. 읽기 쉽게 만든 언어이기 때문에 문법이 쉬워 초보자가 배우기 좋은 언어

변수선언
'변수이름 = 값' 으로 표현
'a = b' 와 'b = a'의 의미는 다르다!
변수(a=2)와 문자열(a='2')는 다른 의미, 혼동 주의!

text = 'abcdefghijk'
result = text
print(result)

: abcdefghijk

text = 'abcdefghijk'
result = len(text)
print(result)

: 11

text = 'abcdefghijk'
result = text[:3]
print(result)

: abc

text = 'abcdefghijk'
result = text[3:8]
print(result)

: defgh

리스트(list) : [ ]

: 순서가 중요하게 값을 담는 것

a_list = [1,5,6,3,2]
a_list.append(99)
print(a_list)

: [1, 5, 6, 3, 2, 99]

a_list = [1,5,6,3,2]
result = a_list[:3]
print(result)

: [1, 5, 6]

a_list = [1,5,6,3,2]
result = 5 in a_list
print(result)

: True(저 리스트에 5가 있는지)

딕셔너리(dictionary) : { }

: key:value

a_dict = {'name' : 'bob','age' : 27}
result = a_dict['name']
print(result)

: bob

a_dict = {'name' : 'bob','age' : 27,'friend' : ['영희','철수']}
a_dict['height'] = 180
print(a_dict)

: {'name': 'bob', 'age': 27, 'friend': ['영희', '철수'], 'height': 180}

people = [
   {'name' : 'bob','age' : 27},
   {'name' : 'john','age' : 30}
]
print(people[1]['age'])

: 30

조건문

money = 3000
if money > 3800:
    print('택시를 타자!')
elif money > 1800:
    print('버스를 타자!')
else:
    print('택시를 못타!')

: 버스를 타자!

콜론(:)이 나오면 들여쓰기를 해야 그 안에 내용물이 된다.

반복문

fruits = ['사과','배','감','수박','딸기']
for aaa in fruits:
    print(aaa)

: 사과


수박
딸기

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}
]
for person in people:
    name = person['name']
    age = person['age']
    if age > 20:
        print(name,age)

:carry 38
ben 27
bobby 57
red 32
queen 25

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}
]
for i, person in enumerate(people):
    name = person['name']
    age = person['age']
    print(i,name,age)
    if i > 2 :
        break

:0 bob 20
1 carry 38
2 john 7
3 smith 17


연습문제 1) 짝수만 나오게하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
for nnn in num_list:
    if nnn % 2 == 0:
        print(nnn)

연습문제 2) 짝수의 개수 출력하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
count = 0
for nnn in num_list:
    if nnn % 2 == 0:
        count += 1
print(count)

연습문제 3) 리스트 안에 있는 모든 숫자 더하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
sum = 0
for num in num_list:
    sum += num
print(sum)

: 38
연습문제 4) 리스트 안에 있는 자연수 중 가장 큰 숫자 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]
max = 0
for num in num_list:
    if max < num:
        max = num
print(max)

: 6

함수

def sum(a,b):
    return a+b
result = sum(1,2)
print(result)

: 더하기를 하셨네요!
3
sum(1,2)가 나오는 순간 1이 a, 2가 b로 들어간다.
return을 만나 return 3이 되면 sum(1,2)가 3으로 변신,
result가 3이되고, 결과값으로 3이 출력됨

def bus_rate(age):
    if age > 65:
        print('무료입니다')
    elif age > 20:
        print('성인입니다')
    else:
        print('청소년입니다')
bus_rate(15)

: 청소년입니다

def bus_rate(age):
    if age > 65:
        return 0
    elif age > 20:
        return 1200
    else:
        return 750
myrate = bus_rate(60)
print(myrate)

: 1200

def check_gender(pin):
    num = pin.split('-')[1][:1]
    if int(num) % 2 == 0:
        print('여성입니다')
    else:
        print('남성입니다')
check_gender('150204-1503458')
check_gender('150204-2503458')
check_gender('150204-3503458')
check_gender('150204-4503458')

: num을 2로 나눠야하는데 num은 문자이기 때문에 정수형으로 바꿔줘야한다 int(num)

튜플(tuple)과 집합(set)

튜플

a = ('사과','감','배')

튜플은 리스트와 같지만 소괄호로 표현
변경, 추가가 불가능

집합

a = [1,2,3,4,4,5,3,3,4,5,1,4,66,7,8,67]
a_set = set(a)
print(a_set)

:{1, 2, 3, 4, 5, 66, 7, 8, 67}
중복을 빼고 보여줌

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(name+'의 점수는 '+(score)+'점입니다')
    print(f'{name}의 점수는 {score}점입니다.')

: 영수의 점수는 70점 입니다
영희의 점수는 65점 입니다.....
scores에 있는 score는 숫자 이므로 문자로 바꿔줘야 한다.(str)
반대로 숫자로 바꿀 때는 int

예외처리

people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben'},
    {'name': 'bobby', 'age': 57},
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]
for person in people:
    try:
        if person['age'] > 20:
            print(person['name'])
    except:
        print(person['name'], '에러입니다')

:carry
ben 에러입니다
bobby
red
queen
자주 쓰면 오류생김...

파이썬 파일 안에서 서로 불러오기



: 안녕!
영수님 안녕하세요

간단하게 한줄로 만들기

if문

num = 15435
if num % 2 == 0:
    result = '짝수'
else:
    result = '홀수'
print(f'{num}{result}입니다')

:15435은 홀수입니다

num = 4534
result = ('짝수' if num % 2 == 0 else '홀수')
print(f'{num}{result}입니다')

:4534은 짝수입니다
(짝수라고해라 만약 나머지가 0이면, 그게아니면 홀수라고해라)

for문

a_list = [1,3,2,5,1,2]
b_list = []
for a in a_list:
    b_list.append(a*2)
print(b_list)

:[2, 6, 4, 10, 2, 4]


(a_list를 돌리고, b_list에 a*2한거를 하나씩 추가)

a_list = [1,3,2,5,1,2]
b_list = [a*2 for a in a_list]
print(b_list)

:[2, 6, 4, 10, 2, 4]
(a_list안에있는 a를 돌리는데, 그때마다 *2를하고 b에 추가)

map, filter, lamda식

map : 리스트의 모든 원소 조작하기

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):
    if person['age'] > 20:
        return '성인'
    else:
        return '청소'
        
result = map(check_adult, people)
print(list(result))

: ['청소', '성인', '청소', '청소', '성인', '성인', '성인', '성인']
people을 하나하나 돌면서 check_adult에 넣어라, 그리고 그 결과값을 list로 묶어라

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}
]
result = map(lambda person: ('성인' if person['age'] > 20 else '청소년'), people)
print(list(result))

:['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인']
map(lambda x: x, people)

filter : 리스트의 모든 원소 중 특별한 것만 뽑기

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}
]

result = filter(lambda x: x['age'] > 20, people)
print(list(result))

: [{'name': 'carry', 'age': 38}, {'name': 'ben', 'age': 27}, {'name': 'bobby', 'age': 57}, {'name': 'red', 'age': 32}, {'name': 'queen', 'age': 25}]

함수의 매개변수

def cal(a,b):
    return a+2*b
result = cal(1,2)
print(result)

:여기서 cal(1,2)는 cal(a=1,b=2)와 cal(b=2,a=1)와 결과가 같다

def call_names(*args):
    for name in args:
        print(f'{name}야 밥먹어라~')
call_names('철수','영수','희재')

: 여러개의 인수를 하나의 매개변수로 받을 때 관례적으로 args(arguments) 라는 이름을 사용

클래스

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('죽었다!')
            
m1 = Monster()
m1.damage(150)
m1.status_check()
m2 = Monster()
m2.damage(90)
m2.status_check()

: Monster : 클래스 이름
m1 : 인스턴스(몬스터 한마리)

일기

오늘 강의를 연달아 듣느라 정신이 없었지만 강사님의 설명이 어느정도 수준에 맞춰서 해주셨다는게 느껴졌다.
하지만 어느정도 이해하는데에 한계가 있어서
아무래도 내일 다시 강의를 처음부터 다시 들어봐야겠다.

0개의 댓글