본문 바로가기

Python Basics

[패스트캠퍼스 수강 후기] 파이썬 인강 자기계발 챌린지 7회차 미션

패스트캠퍼스 파이썬 웹개발 올인원 패키지 후기(7)

 

파이썬 웹개발 올인원 패키지 7번째 시간입니다.

오늘은 지난시간에 이어 조건문, 반복문에 대한 퀴즈를 풀어보았습니다.

그리고 다음으로 함수에 대해 알아보면서 좀 더 파이썬을 활용할 수 있는 방법에 대해 공부하였습니다.

정리 시작하겠습니다.

 

조건문, 반복문 Quiz

 

# 7. 1부터 100까지 자연수 중 '홀수'만 한 라인으로 출력 하세요.
print('7.', end=' ')
for n in range(1, 101, 2):
    print(n, end=' ')
print()

# 8. 아래 리스트 항목 중에서 5글자 이상의 단어만 출력하세요.
q4 = ["nice", "study", "python", "anaconda", "!"]
print('8.', end=' ')
for q in q4:
    if len(q) >= 5:
        print(q, end=' ')
print()

# 9. 아래 리스트 항목 중에서 소문자만 출력하세요.
q5 = ["A", "b", "c", "D", "e", "F", "G", "h"]
print('9.', end=' ')
for q in q5:
    if q.islower():
        print(q, end=' ')
print()

# 10. 아래 리스트 항목 중에서 소문자는 대문자로 대문자는 소문자로 출력하세요.
q6 = ["A", "b", "c", "D", "e", "F", "G", "h"]
print('10.', end=' ')
for q in q6:
    if q.isupper():
        print(q.lower(), end=' ')
    else:
        print(q.upper(), end= ' ')

* 리스트 컴프리헨션 ♥ <중요>

# 리스트 컴프리헨션
a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers = []
for n in range(1, 101):
    numbers.append(n)
print(numbers)
print()

numbers2 = [x for x in range(1, 101)] # 이게 더 직관적이고 빠름, 실제 성능도 좋음
print(numbers2)

<Output>

7. 1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99
8. study python anaconda
9. b c e h
10. a B C d E f g H

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 
58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

함수

(함수 기본)

# 함수 정의 방법
# def function_name(parameters):
#     code

# 함수 호출
# function_name(arguments):

# 함수 선언 위치 중요

# 예제 1
# hello("Python!") >> 이렇게 하면 에러가 남, 함수의 선언이 호출부 보다 항상 먼저 나와야함

def hello(word):
    print("Ex1. Hello ", word)

hello("Python!")
hello(7777)

# 예제 2
def hello_return(word):
    val = "Hellow " + str(word)
    return val

s = hello_return("Ex2. Python!!!!!")
print(s)

# 예제 3 (다중리턴)
def func_mul(x):
    y1 = x * 100
    y2 = x * 200
    y3 = x * 300
    return y1, y2, y3

v1, v2, v3 = func_mul(100)
print('Ex3-1.', v1, v2, v3)
print(type(func_mul(100))) # 사실 다중리턴은 튜플로 리턴되는 것 인듯
print(list(func_mul(100))) # 리스트로 형변환

def func_mul_list(x):
    """
    위 와 같은 건데 리스트로 리턴
    """
    y1 = x * 100
    y2 = x * 200
    y3 = x * 300
    return [y1, y2, y3]

print('Ex3-2.', func_mul_list(100))

<Output>

Ex1. Hello  Python!
Ex1. Hello  7777
Hellow Ex2. Python!!!!!
Ex3-1. 10000 20000 30000
<class 'tuple'>
[10000, 20000, 30000]
Ex3-2. [10000, 20000, 30000]

(*args)

#*args
def args_func(*args):
    """
    다양한 수의 매개변수를 받아서 함수를 구현할 필요가 있을때 *args 사용
    """
    print(args)

args_func('kim')
args_func('kim', 'park')
args_func('kim', 'park', 1)

def args_func2(*args):
    # enumerate 사용 예
    for i, v in enumerate(args):
        print(i, v) # i 는 인덱스 번호

args_func2('kim', 'park', 1)
print()

(**kwargs)

# **kwargs
def kwargs_func(**kwargs):
    print(kwargs)

kwargs_func(name1='kim', name2='park', name3='lee')

def kwargs_func2(**kwargs):
    for k, v in kwargs.items():
        print(k, v)

kwargs_func(name1='kim', name2='park', name3='lee')
kwargs_func2(name1='kim', name2='park', name3='lee')
print()

(전체 혼합)

# 전체 혼합
def example_mul(arg1, arg2, *args, **kwargs):
    # arg1, arg2 는 필수적으로 함수호출시 사용
    # args, kwargs 는 옵션
    print(arg1, arg2, args, kwargs)

example_mul(10, 20)
example_mul(10, 20, 30, 40, 11.1)
example_mul(10, 20, 30, 40, 11.1, name1='park', name2='kim')
print()

(중첩함수 : 클로저)

# 중첩 함수(클로저) : 고급 프로그래머가 되기 위해서는 클로저를 반드시 알아야 함
# 참고: 데코레이터
def nested_func(num):
    def func_in_func(n):
        print(n)
    print('in func')
    func_in_func(num + 10000)

nested_func(10000)

<Output>

('kim',)
('kim', 'park')
('kim', 'park', 1)
0 kim
1 park
2 1

{'name1': 'kim', 'name2': 'park', 'name3': 'lee'}
{'name1': 'kim', 'name2': 'park', 'name3': 'lee'}
name1 kim
name2 park
name3 lee

10 20 () {}
10 20 (30, 40, 11.1) {}
10 20 (30, 40, 11.1) {'name1': 'park', 'name2': 'kim'}

in func
20000

 

오늘 새롭게 파이썬 함수에 대해 공부했습니다.

함수는 반드시 사용해야겠다고 느꼈고

마지막에 배운 클로저에 대해서도 좀 더 심화있게 공부해야할 것 같아요!

나중에 데코레이터 개념에 대해서 완벽히 이해하려면요!

파이썬 인강 계속해서 진행됩니다!

 

 

패스트캠퍼스 파이썬 인강 자세한 내용은 아래 링크를 참고해 주세요!

 

https://bit.ly/2WG0IXN