TIL(22-11-10) 파이썬 기초

C one·2022년 11월 10일

/ 조건문

if문

들여쓰기 주의!

age = 27
if age < 20:
    print("청소년입니다.")
elif age < 65:
    print("성인입니다.")
else:
    print("무료로 이용하세요!")

elif 다양한조건 판단 / else 조건만족하지 않으면


/ 반복문

enumerate , break 활용

fruits = ['사과', '배', '감', '귤','귤','수박','참외','감자','배','홍시','참외','오렌지']

for i, fruit in enumerate(fruits):
    print(i, fruit)
    if i == 4:
        break

enumerate 순서 표시 / break 순서이용해서 멈춤


/ 함수

함수는 반복적으로 사용하는 코드들에 이름을 붙여놓은 것입니다.

def check_gender(pin):
    first_num = int(pin[:1])
    if first_num % 2 == 0 :
        print('Women')
    else:
        print('Man')

my_pin = '200101-3012345'

check_gender(my_pin)

/ 튜플, 집합

튜플
리스트와 비슷하지만 불변인 자료형

a = (1,2,3)
a[0] = 99 #에러

튜플의 요소 바꿀수 없다(불변)


집합(set)
집합을 구현하는 방법, 중복제거된다

a = [1,2,3,4,5,3,4,2,1,2,4,2,3,1,4,1,5,1]

a_set = set(a)

print(a_set)
{1, 2, 3, 4, 5}

교집합 , 합집합

a = ['사과','감','수박','참외','딸기']
b = ['사과','멜론','청포도','토마토','참외']

print(a & b)  # 교집합
print(a | b)  # 합집합

차집합 문제
a가들은 수업중 b가듣지않은 수업

student_a = ['물리2','국어','수학1','음악','화학1','화학2','체육']
student_b = ['물리1','수학1','미술','화학2','체육']

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

set_a_only = set_a - set_b
print(set_a_only)
{'화학1', '국어', '물리2', '음악'}

/ 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(name+'의점수는 '+str(score)+'점입니다') ## 정수형 -> 문자열로 바꿈
영수의점수는 70점입니다
영희의점수는 65점입니다
기찬의점수는 75점입니다
희수의점수는 23점입니다
서경의점수는 99점입니다
미주의점수는 100점입니다
병태의점수는 32점입니다

/ 예외 처리

/ 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: ## try아래 구문을 실행해서 에러가 발생하면
        if person['age'] > 20:
            print (person['name'])
    except: ## expet 이하 실행하라
        name = person['name']
        print(f'{name} - 에러입니다')
carry
ben
bobby - 에러입니다
red
queen

/ 파일 불러오기

파일 여러개로 분리했을때

  • main_test.py
from main_func import *

say_hi()
  • main_func.py
def say_hi():
	print('안녕!')

from 파일이름 import * 사용해서 불러올수 있다

*모든거 다불러옴 / say_hi 쓰면 이것만 불러옴


/삼항연산자

if

num = 3

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

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

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

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

(참일 때 값) if (조건) else (거짓일 때 값)으로 항이 3개라 삼항 연산자입니다


for

a_list  = [1, 3, 2, 5, 1, 2]

b_list = []
for a in a_list:
    b_list.append(a*2)

print(b_list)
a_list  = [1, 3, 2, 5, 1, 2]

b_list = [a*2 for a in a_list]

print(b_list)

/map, filter, lambda식

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

1차 조작 : 변수(person) 의 age가 20보다 크면 '성인' 아니면 '청소년' /
map으로 리턴값(리스트 요소 함수로 처리) 새 리스트 생성

def check_adult(person):
    if person['age'] > 20:
        return '성인'
    else:
        return '청소년'

result = map(check_adult, people)
print(list(result))
['청소년', '성인', '청소년', '청소년', '성인', '성인', '성인', '성인'] ## 결과는 모두 같다

2차 조작 : if 문을 삼항연산자로 바꿈 ( 리턴해라 '성인'을 person['age'] > 20이면, 그렇지 않다면 '청소년을')

def check_adult(person):
    return '성인' if person['age'] > 20 else '청소년'

result = map(check_adult, people)
print(list(result))

3차 조작 : 람다이용 변수(위의 person -> x) 관용적으로 x 쓰임
결과 = people리스트를 돌면서 x에 값을 넣는데, x를 if x['age'] > 20 else '청소년' 로 리턴해서 넣어라 -> 이값(리턴값)을 map에 값저장
프린트하라 새 리스트로 결과값을(map에 저장된 값)

result = map(lambda x: ('성인' if x['age'] > 20 else '청소년'), people)
print(list(result))

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

결과 = people리스트를 돌면서 x에 값을 넣는데, x['age'] > 20인 리턴값들만 넣어라
프린트하라 새 리스트로 결과값을

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

알고리즘 특강

profile
🌽

0개의 댓글