Python
(파이썬 다시 보기)파이썬, python: 3. 제어문과 함수
하방주인장
2023. 5. 3. 12:00
목차
1. if 문
1-1. membership 연산자 in, not in
- 리스트, 튜플, 문자열 사용 가능
- in: 안에 있으면 True 반환, not in: 안에 없으면 True 반환
fruits = ['apple', 'banana', 'orange']
if 'apple' in fruits:
print("사과 있음")
else:
print('사과 없음')
>>> '사과 있음'
if 'apple' not in fruits:
print("사과 알러지가 있어도 먹을 수 있는 과일")
else:
print('사과 알라지 때문에 먹을 수 없음')
>>> '사과 알라지 때문에 먹을 수 없음'
1-2. pass: 조건문에서 아무 일도 하지 않게 설정하기
pocket = ['paper', 'money', 'cellphone']
if 'money' in pocket:
pass
else:
print("카드를 꺼내라")
>>>
=> pocket 리스트 안에 money 문자열이 있기 때문에 if문 다음 문장인 pass가 수행되고 아무 결괏값도 보여 주지 않는다.
1-3. 조건부 표현식
변수 = 조건문이_참인_경우의_값 if 조건문 else 조건문이_거짓인_경우의_값
Score = 77
if Score == 100: Grade = 'A'
elif Score > 70: Grade = 'B'
else : Grade = 'C'
print(Grade)
>>> B
Grade = 'A' if Score == 100 else 'B' if Score > 70 else 'C'
print(Grade)
>>> B
2. while 문
2-1: while 활용 - input
# exit이나 quit이란 입력할 때까지 계속 입력을 받는 기능
text = ''
while text != 'exit' and text != 'quit':
text = input('값을 입력하세요: ')
print('프로그램 종료')
>>> 값을 입력하세요: exit
>>> 프로그램 종료
2-2: while 활용 - 리스트 자료형 활용
numbers 리스트가 비워지면 False가 되어 반복문이 종료되므로, 리스트에서 pop을 사용해 하나씩 원소를 빼가면서 비교한다.
bool([])
>>> False
# 리스트 원소 중 가장 큰 값 찾기
numbers = [3, 7, 2, 9, 4, 1]
max_value = 0
while numbers:
value = numbers.pop()
if value > max_value:
max_value = value
print(max_value)
>>> 9
max(numbers)
>>> 9
3. for 문
3-1. continue
- for 문을 활용하여 양수만 출력
my_list = [5, -2, 0, 10, -3, 8, -1]
for i in my_list:
if i <= 0:
continue
else:
print(i)
>>> 5
10
8
for i in my_list:
if i > 0:
print(i)
>>> 5
10
8
3-2. break
- 1부터 숫자를 더하는데 100 보다 작은 수 중에 가장 큰 수 구하기
max_sum = 0
for num in range(1, 100):
if max_sum + num >= 100:
break
max_sum = max_sum + num
print(max_sum)
>>> 91
3-3. for 문 안에 for 문
my_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in my_list:
for element in row:
print(element)
>>> 1
2
3
4
5
6
7
8
9
4. 내장 함수
# abs: 절댓값 리턴 함수
abs(3 - 7)
>>> 4
# all: 모두 참이면 T
all([True, True])
>>> True
# any: 하나라도 참이면 T
any([True, False])
>>> True
# chr: 유니코드 숫자값을 해당 문자로 리턴
chr(97)
>>> 'a'
# ord: chr의 반대
ord('a')
>>> 97
# dir: 객체가 지닌 변수나 함수를 보여 주는 함수
'pop' in dir([]) # 리스트형에 pop이 있는지
>>> True
dir([1, 2, 3])
>>> ['append', 'count', 'extend', 'index', 'insert', 'pop',...]
# filter(함수명, 데이터): 데이터의 각 원소를 함수에 대입했을 때, 참인 원소만 추출
list(filter(lambda x: x > 0, [1, -3, 2, 0, -5, 6]))
>>> [1, 2, 6]
# divmod: 몫과 나머지를 튜플 형태로 반환
divmod(10, 3)
>>> (3, 1)
# enumerate: 데이터(리스트, 튜플, 문자열)를 입력으로 받아 인덱스 값을 포함하는 enumerate 객체를 리턴
fruits = ['apple', 'banana', 'cherry']
for num, fruit in enumerate(fruits):
print(f'제 {num+1}순위 과일은 {fruit}입니다.')
>>> 제 1순위 과일은 apple입니다.
제 2순위 과일은 banana입니다.
제 3순위 과일은 cherry입니다.
list(enumerate(fruits))
>>> [(0, 'apple'), (1, 'banana'), (2, 'cherry')]
# eval: 문자열로 구성된 표현식을 입력으로 받아 해당 문자열을 실행한 결괏값을 리턴
eval('1+2+3')
>>> 6
# isinstance(x1, x2): x1의 데이터타입이 x2와 동일하면 True
isinstance('문자열', str)
>>> True
# len: 입력값의 길이(요소의 전체 개수)를 리턴(공백 포함)
len([1, 2, 3])
>>> 3
# list: 리스트 생성
list('da ta')
>>> ['d', 'a', ' ', 't', 'a']
# map(f, iterable)은 함수(f)와 반복 가능한 데이터를 입력으로 받아 입력받은 데이터의 각 요소에 함수 f를 적용한 결과를 리턴
list(map(lambda x: x * 2, [1, 2, 3]))
>>> [2, 4, 6]
# max, min: 최댓값, 최솟값 반환 (문자열도 사용 가능)
max([2, 10, 3])
>>> 10
max(['z', 'AAA', 'zz'], key=len)
>>> 'AAA'
# pow: pow(x, y)는 x의 y 제곱한 결괏값을 리턴하는 함수
pow(2, 10) # 2의 10승
>>> 1024
# round: 반올림, 반내림
round(5.1234567, 2)
>>> 5.12
# sorted: 데이터 정렬
a_list = [5, 1, 2, 7]
sorted(a_list) #저장되진 않고 그냥 확인
>>> [1, 2, 5, 7]
# str: 문자열 변환
str([1, 2, 3])
>>> '[1, 2, 3]'
# sum: 합을 반환 (문자열은 불가)
sum([1, 2, 3])
>>> 6
# tuple: 튜플 생성
tuple('hello')
>>> ('h', 'e', 'l', 'l', 'o')
# type: 입력값의 자료형이 무엇인지 알려 주는 함수
type(0)
# zip: 동일한 개수로 이루어진 데이터들을 묶어서 리턴하는 함수이다.
list(zip([1, 2, 3], [4, 5, 6]))
>>> [(1, 4), (2, 5), (3, 6)]
# range: 입력받은 숫자에 해당하는 범위 값을 반복 가능한 객체로 만들어 리턴
list(range(5))
>>> [0, 1, 2, 3, 4]
5. 함수
5-1. 전역변수와 로컬변수
# 전역변수와 지역변수의 관계
num1 = 1
def test():
num1 = 0
print('함수 안: ', num1)
test()
print('함수 실행 이후: ', num1)
>>> 함수 안: 0
함수 실행 이후: 1
# global
cnt = 0
def increment_cnt():
global cnt
cnt += 1
increment_cnt()
print(cnt)
>>> 1
# 권장 방법: 함수 return => 전역변수에 대입
num1 = 1
def test():
num1 = 0
return num1
num1 = test()
print(num1)
>>> 0
5-2. 매개변수의 개수를 미리 알 수 없을 때
# argument
# *매개변수: 여러 개의 입력값을 받아 튜플로 만들어 줌
def print_args(*args):
print('type: ', type(args))
print('args: ', args)
print('리스트 사용 가능: ', args[0])
for arg in args:
print('arg: ', arg)
print_args('a', 'b', 'c')
>>> type: <class 'tuple'>
args: ('a', 'b', 'c')
리스트 사용 가능: a
args: a
args: b
args: c
# 키워드 매개변수 kwargs
# **매개변수: 매개변수는 빅셔너리가 된다.
def print_kwargs(**kwargs):
print('type: ', type(kwargs))
print('print_kwargs: ', kwargs)
print_kwargs(first= 'a', second='b')
>>> type: <class 'dict'>
args: {'first': 'a', 'second': 'b'}