Python_Basic

Gi Woon Lee·2024년 6월 17일
0

Python

목록 보기
1/13
post-thumbnail

수업 목표: 빠르게 기초 문법을 배운 뒤 사용해보기
notion_link

파이썬 기초 문법 뽀개기

파이썬 시작하기

  1. 파이썬을 설치한다? 번역 패키지를 설치하는 것이라고 이해하면 된다.
a = (3 == 2)

print(a)

#변수는 값을 담는 박스다 == 값을 가르키고 있다. 

변수 선언과 자료형

a = 3
b = 2
#3이라는 숫자가 a라는 박스에 들어갔다! 

print(a/b)

문자열 다루기

문자열 2와 숫자 2는 다르다!
숫자 2를 문자열 2로 바꾸는 방법?

a ='2'
b = str(2)

print(a+b)
#출력 22

len() : 문자열의 길이 측정

문자열 자르기(1): []

text = 'abcdefg'

result = text[3:]

print(result)
#출력: 

앞으로 뒤로 중간 다 잘라봐라

문자열 자르기(2): split()

myemail = "giwoonlee17@gmail.com"

result = myemail.split('@')[1].split('.')[1]

print(result)

#출력: com

리스트와 딕셔너리

리스트: 값을 담는다(순서대로!)

표현: [리스트]로 표현

a_list = [2, '배', False, ['감','사과']]

print(a_list[3][1])
#출력: '감'
  • 추가하기: a_list.append(100)
  • 리스트 짜르기: a_list[2]
  • 길이 구하기: len
  • 값 찾기: in
a_list = [1,3,4,5,678,8,7]

result = (678 in a_list)

print(result)
#출력: true

딕셔너리: key로 value를 담는다(key-value쌍)

표현: {딕셔너리}로 표현, 순서가 없다!

a_dict = {'칠전팔기':['권지호','서준영','이기운','홍다윤'], '12조':['a','b','bd','cds'], 'managers':"there'sNoNeedToBeInATeam"}

print(a_dict['칠전팔기'][2])

# 출력: 이기운
# dictionary의 구조, print문의 구성(특히 '[]'의 위치와 쓰임새를 잘 숙지해야 할 것으로 보인다)
  • 딕셔너리 활용
    1. 딕셔너리를 생성
    2. 'peter' 가 딕셔너리 안에 존재하는지 "in"을 사용하여 검증
    3. 딕셔너리 안에 있는 key 값: 'peter'를 통해 상응하는 value 값을 출력

a_dict = {'칠전팔기':['권지호','서준영','이기운','홍다윤'], '12조':['a','b','bd','cds'], 'managers':"there'sNoNeedToBeInATeam"}

a_dict['peter'] = "james's father" #append a new dictionary

inspection = ('peter' in a_dict) # is 'peter' in dictionary? 


print(inspection) # in 을 통해 'peter' 가 a_dict 안에 존재하는지 검증한다. 
print(a_dict['peter']) #key 에 해당하는 value: "james's father" 을 출력한다. 

리스트와 딕셔너리 혼용

  • 리스트의 값이 딕셔너리인 경우
people = [
    {'name':'bob', 'age':27},
    {'name':'john', 'age':30}
]

print(people[1]['age'])
  • 리스트 속 딕셔너리에서 값 출력하기! : 스미스의 과학 점수는?
# mission: "print out science score of smith"
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'])

조건문

if, elif, else

  • 들여쓰기, 줄 맞춤은 필수

  • ex) if, elif, else 를 사용한 조건문 코드 작성 (feat. 군인재획득부서)

#장교가 되고 싶은 james, 그의 나이는 만27살이다. 입대가 가능할까?

age = 15

if 19 < age <= 27:
    print("장교교육대에 오신걸 환영합니다.")
elif age < 19:
    print("1년 뒤에 뵙겠습니다.")
    print("학사 학위를 준비하세요")
else: 
    print(input("군필이신가요?"))

반복문

  • 리스트 안에 있는 요소들을 하나씩 꺼내먹는것.

for

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

# 20살 이상만 출력하라

for individual in people: #individual 말고도 어떤 것이든 올 수 있다. 
    name = individual['name'] # key 값(name)에 해당하는 value 값(bob,carry ..)들로 구성된 리스트 뽑아내기
    age = individual['age'] # key 값(age)에 해당하는 value 값(20, 38 ..)들로 구성된 리스트 뽑아내기
    if age > 20:
        print(name, ":", age)

enumerate()

  • 서열을 만들어 break로 상위 몇 개만 출력할 수 있다.
for i, person in enumerate(people):
	name = = individual['name']
    age = individual['age']
    print(i, name, age)
    if i > 2: #0,1,2 즉 상위 3개 까지만 출력하고 for 문을 break한다.
    	break

for 반복문-연습문제

1. 짝수만 출력하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

for num in num_list:
    if num % 2 == 0:
        print(num)
  • 필기노트:
  1. 나머지 구하기는 "%"을 사용한다.

2. 짝수 개수 구하기

num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

count = 0
for i in num_list:
    if i % 2 == 0:
        count = count + 1 # count += 1 과 같은 말이다.
        
print(count) # 최종 print 함수는 for 문 바깥에서 실행해야 한다. 한그러면 1부터 7까지 출력됨. 
  • 필기노트:
  1. 최종 print를 for문 바깥에 위치시켜야 한다. 안그러면 for문의 반복 과정(1 씩 더하는 과정)이 전부 출력된다.
  2. count = count + 1 은 count += 1 로 대체 가능하다.

3. 리스트 값 전부 더하기

  • 사실 print(sum(num_list)) 하면 간단하지만, 우리는 for문을 배우고 있으니 for 반복을 통해서 문제를 풀어보자.
num_list = [1, 2, 3, 6, 3, 2, 4, 5, 6, 2, 4]

sum = 0
for num in num_list:
    sum = sum + num
    
print(sum)

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)
  • 필기노트:
  1. max = num 이 포인트이다. if 문의 조건을 달성했을 때,
    해당 조건의 값을 출력변수로 배정해버리는 아이디어.

함수

return : 변신주문

def sum(a, b):
	 return a + b
    
result = sum(1, 4) #return 1 + 4로 변신!
print(result)

함수 문제

def check_gender(pin):
    print('')

my_pin = '200101-3012345'
check_gender(my_pin)
  • 나의 시도
def check_gender():
    if int(my_pin.split('-')[1][0]) % 2 == 0:
        print("여자입니다")
    else:
        print("남자입니다.")

my_pin = '200101-3012345'
my_pin = '200101-1012345'
my_pin = '200101-2012345'

check_gender(my_pin)
  • 답안
def check_gender(pin):
    num = pin.split('-')[1][:1]
    if int(num) % 2 == 0: # 문자열 -> 숫자열 변환 by int()
        print('여성')
    else:
        print('남성')

check_gender('200101-1012345')
check_gender('200101-2012345')
check_gender('200101-4012345')
  • 노트:
    변수(위 예시에서는 num)를 생성하는 과정을 계속 빼먹는다. 연산을 위한 변수 생성을 염두하자.
    변환 함수: str() 숫자->문자 , int() 문자->숫자

파이썬 심화 문법 뽀개기

튜플, 집합

튜플 ()

  • 리스트와 동일하게 순서가 있는 자료형이지만 고정된 형태이다.
# 리스트: a[1]로 리스트 구성을 바꿀 수 있음.
a = ['apple','persimmon', 'pear']

a[1] = 'watermelon'

print(a)
# 튜플: a[1]로 튜플을 바꿀 수 없음. typeError 발생
a = ('apple','persimmon', 'pear')

print(a)

집합 set()

  • 중복을 제거한 값들의 집합

1. 합집합: |

2. 교집합: &

3. 차집합: -

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)  # 교집합 1
print(b_set - a_set)  # 교집합 2

#집합 a, b가 [], {}, () 이어도 전부 set()을 통해 집합화 가능하다 
  • 노트
    집합(a, b)들은 값들이 튜플(), 리스트[], 상관없이 전부 set()함수를 통해 집합으로 변환이 가능하다.
    세트는 중괄호 {}를 사용하지만, 딕셔너리와는 달리 키와 값의 쌍이 아닌 값들만 포함한다.
    세트는 중복된 요소를 허용하지 않으며 요소의 순서도 보장하지 않는다.
    각각 고유한 항목을 모아 놓은 컬렉션 이라고 볼 수 있다.

a list of dictionaries

  • 여러개의 dict으로 구성된 list에 대해 알아보자.
scores = [
    {'name':'영수','score':70},
    {'name':'영희','score':65},
    {'name':'기찬','score':75},
    {'name':'희수','score':23},
    {'name':'서경','score':99},
    {'name':'미주','score':100},
    {'name':'병태','score':32}    
]
# 위 코드가 "딕셔너리들의 리스트" 이기 때문에 scores['name']으로 direct 접근이 불가하다. 
# you need to iterate through the list to access each dictionary, or specify the index of the dictionary you want to access.
  • 노트:
    위 list는 말 그대로 여러개의 dict으로 구성되어 있다.
    따라서 여기서 값을 뽑고 싶다면 그 방법은 다음과 같다.
    1. iteration 활용

    for i in scores:
        name = i['name']
        score = i['score']
        print(name, score)

    2. 목표 dict과 목표 valued의 key 값을 모두 제시

    print(scores[0]['name'])
    # '영수' 출력

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}점 입니다.')

# 위 코드가 "딕셔너리들의 리스트" 이기 때문에 scores['name']으로 direct 접근이 불가하다. 
# you need to iterate through the list to access each dictionary, or specify the index of the dictionary you want to access.
  • 노트:
    f-string 역시 for 반목문 안에서 활용된다.

기억하자!
a list of dictionaries 에서 원하는 value를 출력하려면,
1. for반복문을 사용하거나
2. print(scores[0]['name']) 처럼 원하는 value 값에 대응되는 key 값 좌표를 설정해줘야 한다.

예외처리

Try-Exept

트라이 해보고 없으면 exept를 실행해라~
남용하면 어디서 에러가 났는지 알 수 없게 된다.

  • for 문을 돌면서 value를 하나씩 뽑아내고 싶은데, 뽑기로 한 대상의 값이 부재하면 key error 가 발생한다.
people = [
    {'name': 'bob', 'age': 20},
    {'name': 'carry', 'age': 38},
    {'name': 'john', 'age': 7},
    {'name': 'smith', 'age': 17},
    {'name': 'ben', 'age': 17},
    {'name': 'bobby', },
    {'name': 'red', 'age': 32},
    {'name': 'queen', 'age': 25}
]


for person in people:
    name = person['name']
    if person['age'] > 20:
        print(f"{name}은 성인입니다.")
KeyError: 'age'

이 때 값이 없는 부분만 체크하고 나머지 값을 출력하도록 하는 것이 try-exept 문 이다.

for person in people:
    try:
        name = person['name']
        if person['age'] > 20:
            print(f"{name}은 성인입니다.")
    except:
        name = person['name']
        print(f"{name} - error")

출력값

carry은 성인입니다.
bobby - error
red은 성인입니다.
queen은 성인입니다.

파일 불러오기

from 파일이름 import *

say_hi()

"파일이름"에 있는 함수를 전부 가져다 쓸 수 있다.

한줄의 마법

if

for문

map, filter, lambda식

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

함수 심화

매개변수

함수의 인자

클래스

마무리

0개의 댓글