프로그래밍 시작하기 : 파이썬 입문(inflearn Original)
4. 흐름 제어
4-1. if 구문 : 조건문은 아주 짱 중요해요
# 제어문
print(type(False)) # 0, "", [], (), {} ...
print()
if True:
print('Good')
if False:
print('Bad')
print()
if False:
print('Good!')
else:
print('Bad')
print()
#관계연산자
# >, >=, <, <=, !=, ==
x = 15
y = 10
print(x==y)
print(x!=y)
city = ""
print()
if city:
print("You are in ", city)
else:
print("plz enter your city")
city2 = "seoul"
print()
if city2:
print("You are in ", city2)
else:
print("plz enter your city")
# 논리 연산자(중요)
# and, or, not
a = 75
b = 40
c = 10
print('and : ', a>b and b>c)
print('or : ', a>b or b>c)
print('not : ', not a > b)
# 산술 : +, -, *, / 등
print('e1 : ', 3+12 > 7+3)
# 순서는 산술 > 관계 > 논리이다.
print('e3 : ', 5 + 10 > 3 and 7 + 3== 10)
print()
score1 = 90
score2 = 'A'
if score1 >= 90 and score2 == 'A':
print('Pass')
else:
print('Fail')
import sys;
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
print()
id1 = 'vip'
id2 = 'admin'
grade = 'platinum'
if id1 == 'vip' or id2 == 'admin':
print('관리자 입장')
import sys;
import io
sys.stdout = io.TextIOWrapper(sys.stdout.detach(), encoding='utf-8')
sys.stderr = io.TextIOWrapper(sys.stderr.detach(), encoding='utf-8')
#다중 조건문
num = 90
if num >= 90:
print('Grade : A')
elif num >= 80:
print('Grade : B')
elif num >= 70:
print('Grade : C')
else:
print('과락')
# 중첩 조건문
grade = 'A'
total = 95
if grade == 'A':
if total >=90 :
print('장학금 100%')
elif total >= 80:
print('장학금 80%')
else:
print('장학금 50%')
else:
print('장학금 없음')
# in, not in
q = [10, 20, 30]
w = {70, 80, 90, 100}
e = {"name": "Lee", "city" : "Seoul", "grade": "A"}
r = (10, 12, 14)
print(15 in q)
print(90 in w)
print("name" in e)
print("Seoul" in e.values())
4-2. for 구문 : 하루종일 반복해봐요
# 파이썬 반복문 FOR
#for in <Collection>
# <loop body>
for v1 in range(10): # 0~ 9
print('v1 is : ', v1)
print()
for v2 in range(1, 11): #1~10
print('v2 is : ', v2)
print()
for v3 in range(1, 11, 2):
print('v3 is : ', v3)
# collection으로 여러 개의 데이터에 빠르게 접근할 수 있다.
# 1~1000까지의 합
print()
sum1 = 0
for v4 in range(1, 1001, 2):
sum1 += v4
print(sum1)
print(sum(range(1, 10)))
print(type(range(1, 11))) # 데이터를 담고 있는 list를 생성하는 함수
# Iterables 반복할 수 있는 자료형
# 문자열, 리스트, 튜플, 사전, 집합
# iterable 리턴 함수 : range, reversed , enumerate, filter, map, zip
names = ['Kim', 'Park', 'Cho', 'Lee', 'Choi', 'Yoo']
for name in names:
print('You are : ', name)
lotto_numbers = [11, 19, 21, 28, 36, 37]
for n in lotto_numbers:
print("Current number : ", n)
print()
word = "Beautiful"
for s in word:
print('word : ', s)
my_info = {
"name" : "Lee",
"Age" : 33,
"City": "Seoul"
}
for key in my_info:
print('key : ', my_info[key])
for v in my_info.values():
print('value : ', v)
name = 'FineApple'
for n in name:
if n.isupper():
print(n)
else:
print(n.upper())
# break : 반복문 탈출
number = [14, 3, 4, 7, 10, 24, 17, 2, 33, 15, 34, 36, 38 ]
for num in number:
if num == 4:
print('Found 4!')
break
else:
print('Not found : ', num)
# continue를 만나면 다시 조건을 검사하는 부분으로 이동
lt= ["1", 2, 5, True, 4.3, complex(4)]
for v in lt:
if type(v) is bool:
continue
print("current type : ", v, type(v))
# for - else
numbers = [14, 3, 4, 7, 10, 49, 17, 2, 33, 15, 34, 36, 38 ]
for num in numbers:
if num == 24:
print("Found : 24")
break
else:
print("Not Found : 24")
for문이 break를 만나지 않으면 else 구문을 실행시킬 수 있다
# 구구단 출력
for i in range(2, 10):
for j in range(1, 10):
print('{:4d}'.format(i*j), end='')
print()
# 변환 예제
name2 = 'Aceman'
print('Reversed', reversed(name2))
print('List', list(reversed(name2)))
print('Tuple', tuple(reversed(name2)))
print('Set', set(reversed(name2)))
4-3. while 문 : for문과 조금 달라요
# while 실습
# while <expr> :
# <statement(s)>
n = 5
while n > 0:
n = n - 1
print(n)
a = ['foo', 'bar', 'baz']
while a:
print(a)
# 여기서 그냥 a만 붙여놓으면 무한반복
a = ['foo', 'bar', 'baz']
while a:
print(a.pop())
while도 for문처럼 break를 만나지 않았을 시 실행되는 else가 있음.
5. 파이썬 함수 및 입력
5-1. 함수는 프로그래밍에서 중요해요.
# 예제1
def first_func(w):
print("Hello ", w)
word = "Goodboy"
first_func(word)
# 예제2
def return_func(w1):
return "Hello, " + str(w1)
x = return_func(12)
print(x)
# 예제3 : 다중반환
def func_mul(x):
y1 = x * 10
y2 = x * 20
y3 = x * 30
return y1, y2, y3
x, y, z = func_mul(100)
print(x, y, z)
# 튜플 리턴
def func_mul2(x):
y1 = x * 10
y2 = x * 20
y3 = x * 30
return (y1, y2, y3)
q = func_mul(20)
print(type(q), q, list(q))
# 리스트 리턴
def func_mul3(x):
y1 = x * 10
y2 = x * 20
y3 = x * 30
return [y1, y2, y3]
q = func_mul3(30)
print(type(q), q, list(q))
# 딕셔너리 리턴
def func_mul4(x):
y1 = x * 10
y2 = x * 20
y3 = x * 30
return {'v1': y1, 'v2': y2, 'v3': y3}
d = func_mul4(10)
print(type(d), d, d.get('v2'), d.items(), d.keys())
# 중요
# *args, **kwargs
# *args(언팩킹)
def args_func(*args) : # 매개변수 명은 자유
for i, v in enumerate(args):
print('Result : {}'.format(i), v)
print('----')
args_func('Lee')
args_func('Lee', 'Park')
# 함수를 유연하게 사용할 때, parameter가 몇 개여도 상관없음(튜플로 인식)
# **kwargs(언팩킹)
def kwargs_func(**kwargs): # 키와 밸류를 넘
for v in kwargs.keys():
print("{}".format(v), kwargs[v])
print('----')
kwargs_func(name1='Lee')
kwargs_func(name1="Lee", name2='Park') #딕셔너리 형으로 매개변수를 넣는다고 생각하면 됨.
# 전체 혼합
def example(args_1, args_2, *args, **kwargs) :
print(args_1, args_2, args, kwargs)
example(10, 20, 'Lee', 'Kim', 'Park', age1 = 20, age2 = 30, age3 = 40)
# 중첩 함수
def nested_func(num):
def func_in_func(num):
print(num)
print("In func")
func_in_func(num + 100)
nested_func(100)
# 람다식 예제
#메모리 절약, 가독성 향상, 코드 간결
# 일반 함수는 객체 생성 -> 리소스를 할당받는다
# 람다는 즉시 실행함수(Heap 초기화) -> 메모리 초기화
# 남발 시 가독성 오히려 감소
def mul_func(x, y):
return x * y
lambda x, y: x*y
# 인자 : 리턴. 이름 없는 함수.
lambda_mul_func = lambda x, y: x*y
q = mul_func(10, 20)
print(q)
print(lambda_mul_func(50, 50))
print()
def func_final(x, y, func):
print(x*y*func(100, 100))
func_final(10, 20, lambda x, y: x*y)
func_final(10, 20, mul_func)
q = mul_func
func_final(10, 20, q)
5-2. 사용자가 원하는 값을 입력해봐요.
# Input 사용법
# 기본 타입 str
# 예제1
name = input("Enter Your Name")
grade = input("Enter Your Grade")
company = input("Enter Your Company")
print(name, grade, company)
# 예제2
number = input("Enter number: ")
name = input("Enter name : ")
print(type(name))
print(type(number))
입력받는 것은 무조건 문자열로 나와서 형변환을 해줘야 함.
# 예제 3
first_number = int(input("first : "))
second_number = int(input("second: "))
total = first_number + second_number
print(total)
print("FirstNum - {0}, LastName - {1}".format(input("Enter first : "), input("Second : ")))
'개발 공부 > Python' 카테고리의 다른 글
프로그래밍 시작하기 : 파이썬 입문 10. 최종 프로젝트 (0) | 2020.07.05 |
---|---|
프로그래밍 시작하기 : 파이썬 입문 8. 기본 함수~9.파일 쓰기 (0) | 2020.07.05 |
프로그래밍 시작하기 : 파이썬 입문 6. 클래스, 모듈, 패키지~7.예약처리 (0) | 2020.07.05 |
프로그래밍 시작하기 : 파이썬 입문 2.완전 기초~3.기초 자료형 (0) | 2020.07.05 |
(new) 프로그래밍 시작하기 : 파이썬 입문 1. 파이썬 시작해봐요. (1) | 2020.07.03 |