if
: 조건문 (conditional statements)
if
: 제시한 조건이 True 일 때 실행할 코드 [조건문 첫번째 줄]
elif
: 제시한 조건이 True 일 때 실행할 코드 [조건문 두번째 줄 이후]
else
: if, elif 가 모두 False 일 때 실행할 코드 [조건문 마지막 줄]
불린 입력값 사용한 조건문 예시
isTrue = False
if isTrue:
print("isTrue 는 True입니다.")
else:
print("isTrue 는 False입니다.")
# isTrue 는 False입니다.
비교 연산자 & 논리 연산자 사용한 조건문 예시
if (10 > 1) and (11 == 12):
print(True)
else:
print(False)
# False
if
+ elif
+ else
예시
import random
blackPink = ["Jennie", "Jisu", "Rosé", "Lisa"]
country = ["New Zealand", "South Korea", "Australia", "Thailand"]
randomInt = random.randint(0, 10)
def trivia(bP, c):
print(f'{bP} is raised in {c}.')
if randomInt > 5 :
trivia(blackPink[0],country[0])
trivia(blackPink[1],country[1])
elif randomInt >= 1 :
trivia(blackPink[2],country[2])
trivia(blackPink[3],country[3])
else:
print(f'{blackPink} are the team.')
# for 45.45%
# Jennie is raised in New Zealand.
# Jisu is raised in South Korea.
# for another 45.45%
# Rosé is raised in Australia.
# Lisa is raised in Thailand.
# for 9.1%
# ['Jennie', 'Jisu', 'Rosé', 'Lisa'] are the team.
조건문에서 False
로 간주되는 값
None
0
''
(빈 문자열)
[]
(빈 리스트)
{}
(빈 딕셔너리)
# example
if "":
print("can't be executed")
else:
print("executed")
# executed
while
, for
: 반복문 (loops)
while
loop
# syntax
값 = 1 # 초기값
while 값 <= 10 : # 반복 조건
print(값) # 반복할 코드
num += 1 #증감식
# example
num = 1
while
은 변수를 제어해야 하기 때문에 for
에 비해 덜 자주 사용함
while num <= 10:
print(num)
num += 1
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
infinite while
loop
증감조건이 없기 때문에 break
가 없음
# infinite loop example
while True:
print("하", end = '')
for
loop
# syntax
for 반복변수 in 반복대상:
반복할 코드
for y in range(시작,끝):
print()
for i in range(1, 11):
print(i)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
# example using strings from Inflearn
for char in "hello":
print(char)
# h
# e
# l
# l
# o
for
loop + var
# syntax
var = [반복변수 for 반복변수 in range(시작, 끝)]
for i in var:
print(i)
# example with variables from Inflearn
a = [i for i in range(1, 11)]
a
for item in a:
print(item)
# 1
# 2
# 3
# 4
# 5
# 6
# 7
# 8
# 9
# 10
break
# stop after printing 5
for i in range(1,11):
if i > 5:
break
print(i)
# 1
# 2
# 3
# 4
# 5
continue
# skip 5
for i in range(1,11):
if i == 5:
continue
print(i)
# 1
# 2
# 3
# 4
# 6
# 7
# 8
# 9
# 10
# 1부터 5까지 더하는 프로그램을 만들어 보시오. (1)for, (2) while
# 단, 결과값은 sum 변수에 담으시오.
# (1)
sum = 0
for i in range(6):
sum += i
print(sum)
# (2)
sum = 0
i = 0
while i < 5:
i += 1
sum += i
print(sum)
# Q.구구단 전체를 표현하시오. (1단부터 9단까지)
num = 1
ii = 1
for i in range(1,10):
print(f'''
{i}단:''')
while ii < 10:
num = ii * i
print(num)
ii += 1
ii = 1
num = 1
# 정답
for x in range(1, 10):
print(f"***{x}단 입니다***")
for y in range(1, 10):
print(f"{x} * {y} = {x*y}")
# Q2.유저가 입력한 특정 구구단만 표현하시오. (1단이면 1단, 9단이면 9단)
num = 1
ii = int(input('원하는 구구단, 숫자만'))
print(f'{ii}단:')
for i in range(1,10):
num = ii * i
print(num)
# 정답
num = input('숫자룰 입력하세요')
real_num=int(num)
for i in range(1,10):
print(f"{real_num} x {i} = {real_num*i}")
함수 (functions)
내장 함수 (built-in functions)
print()
: 그대로 출력
print("Hello World!")
# Hello World!
Jupyter Notebook에서는 print
함수 없어도 출력됨
"Hello World!"
# 'Hello World!'
큰 따옴표 (double quotation), 작은 따옴표 (single quotation) 구분 없음
'Hello World!'
# 'Hello World!'
type()
: 유형 출력
type("Hello World!")
# str
type(1)
# int
-
str()
,int()
,bool()
등 : 데이터형 변경 함수
len()
: 데이터의 길이 출력
외장 함수 (external functions)
import random
random.randint(1, 10) # 1~10사이의 정수 중 난수값 리턴
import sys
if sys.version <= 3.9:
print("업데이트를 하세요.")
import os
os.getcwd() # 파이썬의 실행 경로 확인 (get current working directory)
os.mkdir() # 폴더 생성 (make directory)
import time
time.time() # 시간을 실수 형태로 반환
time.localtime(time.time()) # 시간을 UTC 기준으로 반환
def
: 정의 함수 (define functions)
- 특정 기능을 하는 코드를 담는 공간
- 주로 반복되고 자주 사용하는 기능의 코드를 함수로 사용
- 예약어(
if
,for
,def
등)는 함수명으로 사용 불가
사칙연산자 사용 가능
# syntax
def 함수명(매개변수1, 매개변수2):
코드
return 반환 값
def myAdd(x, y):
answer = 10*x + y
return answer
a = myAdd(5, 3)
a
# 53
str
+ str
연산 가능
- string에는 합산(+ 연산자)만 사용 가능 ( -, * 등 사용 불가능)
- 입력값이 다른 두 종류의 합산은 불가능 (
str
+int
/str
+float
)
def my_function(fname):
print(fname + " Refsnes")
my_function("Emil")
my_function("Tobias")
my_function("Linus")
# Emil Refsnes
# Tobias Refsnes
# Linus Refsnes
복수 값 반환 (multiple return)
def addProd(x, y):
add = x+y
prod = x*y
return add, prod
d = addProd(3, 5)
d
# (8, 15)
- tuple 반환을 하여 복수개의 값 return 가능
def addProd(x, y):
add = x+y
prod = x*y
return add, prod
add, prod = addProd(5,6)
print(add, prod)
# 11 30
변수
var
: 변수 (variable)- 데이터를 담는 공간
int
,float
,str
,bool
모두 정의 가능
보통 코드 윗줄에 정의함
# syntax
변수명 = "데이터"
나이 = 28
직업 = "학생"
isTrue = True
매개 변수 (parameter)
- 함수에 전달되는 값 (input / 함수의 재료)
- 함수의 목적과 기능에 따라서 매개변수가 없을 수도 있고, n개일 수도 있음
정의된 순서에 따라 값을 전달해야 함, 그게 아니라면 값을 명시하여 전달
b = myAdd(y=5, x=2)
b
# 25
매개변수 기본값 지정 가능
- 전달되지 않으면 기본값으로 사용
def myAdd(x, y=3):
answer = 10*x + y
return answer
c = myAdd(1)
c
# 13
# Q.성적과 이름을 입력하고(매개변수),
# 성적에 따라서 이름과 등급을 알려주는 프로그램(함수)을 만드시오.
#90점 이상 A등급
#80점 이상 B등급
#70점 이상 C등급
#60점 이상 D등급
#60점 미만 F등급
def usrGrade(result, name):
score = int(input('성적을 입력하세요 '))
name = input('이름을 입력하세요 ')
if score >= 90:
grade = 'A'
elif score >= 80:
grade = 'B'
elif score >= 70:
grade = 'C'
elif score >= 60:
grade = 'D'
else:
grade = 'F'
result = f'{name}님은 {grade}등급입니다.'
return result
usrGrade(result, name)
# 성적을 입력하세요 99
# 이름을 입력하세요 ys맥스
# 'ys맥스님은 A등급입니다.'
지역/전역 변수 (local/global variables)
지역 변수 (local variable) : 함수 내에 선언한 변수
함수내의 변수는 함수 내에서만 유효함
전역 변수 (global variable) : 프로그램 전역에서 사용가능 한 변수 (상단에 정의됨)
차이 : 변수가 참조 가능한 코드상의 범위
k = "안녕"
def dummy():
# 지역, 전역 변수를 같은 이름으로 선언할 경우 지역변수의 우선순위가 더 높음
k = "잘가" # 주석을 사용해서 테스트!
print(k)
return
dummy() # 지역변수
print(k) # 전역변수
# 잘가
# 안녕
global
: 함수 내의 변수를 전역변수로 선언
k = "안녕"
def dummy():
global k
k = "잘가"
print(k)
return
dummy() # global 키워드로 지역변수 k를 전역변수로 선언
print(k) # 기존 전역변수 k가 dummy함수에 의해 새로운 변수로 수정됨
# 잘가
# 잘가
클래스 (class)
여러 함수의 모임
무언가를 만들어내는 틀
class
안의 함수는 반드시 self
라는 매개 변수를 포함해야 함
class FishBread():
def redbean_bread(self):
print("팥 붕어빵")
def sucream_bread(self):
print("슈크림 붕어빵")
a = FishBread() # class
a.redbean_bread() # def
# 팥 붕어빵
연습문제
# 문제 1. 1부터 10까지의 정수 중에서 짝수만 출력하는 코드를 작성하세요.
i = 1
while i <= 10:
if i % 2 == 0:
print(i)
i += 1
for i in range(1,11):
if i % 2 == 0:
print(f'짝수 : {i}')
# 문제 2. 사용자로부터 입력받은 숫자가 양수인지 음수인지 출력하는 코드를 작성하세요.
try:
a = int(input('숫자입력 '))
if a > 0:
print(str(a) + '는 양수')
elif a < 0:
print(str(a) + '는 음수')
else:
print('양수도 음수도 아님')
except:
print('정수만 입력하셈')
# 문제 3. 1부터 100까지의 정수 중에서 3의 배수이면서 5의 배수인 정수의 합을 구하는 코드를 작성하세요.
def multiples():
a = 0
for i in range(1,100):
if (i % 3 == 0) and (i % 5 == 0):
a += i
return a
multiples()
# 문제 4. 사용자로부터 n개의 정수를 입력받아, 이 중에서 가장 큰 값과 가장 작은 값을 구하는 코드를 작성하세요.
usrList = []
maxInList = 0
minInList = 0
def maxAndMin():
a = input('숫자를 입력하세요. 결과보기: r 입력 ')
if a == 'r':
maxInList = max(usrList)
minInList = min(usrList)
print(f'''최대값: {maxInList}
최소값: {minInList}''')
return None
else:
try:
usrList.append(int(a))
except ValueError:
print('정수만 입력하세요.')
print('현재 입력한 숫자: ' + str(usrList))
maxAndMin()
maxAndMin()
usrList = []
usrInputTimes = int(input("몇개의 숫자를 입력하시겠습니까?"))
for i in range(usrInputTimes):
usrInput = int(input(f'숫자를 입력하세요 ({i+1}번째)'))
usrList.append(usrInput)
min_val = usrList[0]
max_val = usrList[0]
for i in usrList:
if i <= min_val:
min_val = i
print(f'최소값 : {i}')
if i >= max_val:
max_val = i
print(f'최대값 : {i}')
# 숫자 맞추기 게임을 함수로 만들어보세요.
# 맞출 숫자는 아래 코드와 같이 1~100까지 자연수 중 랜덤으로 정합니다.
# 숫자를 입력할 때마다 더 큰지 작은지 여부를 말해줍니다.
# 1~100까지의 정수가 아닌 정수가 입력된다면 '1부터 100까지의 정수 중 하나를 입력하세요.'라고 출력하고 게임을 계속 이어갑니다.
# 정수가 아닌 것이 입력된다면 '잘못된 값을 입력했습니다.'라고 출력하고 게임을 계속 이어나갑니다.
import random
number = random.randint(1, 100)
def guess():
try:
a = int(input('1부터 100까지의 정수 중 하나를 입력하세요.'))
except ValueError:
print('잘못된 값을 입력했습니다. 정수를 입력하세요.')
guess()
else:
if a > 100:
print('입력값이 100을 초과했습니다.')
guess()
elif a < 1:
print('입력값이 1 미만입니다.')
guess()
else:
if number > a:
print('입력값이 난수보다 작습니다.')
guess()
elif number < a:
print('입력값이 난수보다 큽니다.')
guess()
else:
print('입력값이 난수와 같습니다. 게임을 종료합니다.')
return None
guess()
# 문제: 숫자 맞추기 게임을 파이썬으로 작성하세요. 이 게임은 다음과 같은 기능을 가져야 합니다:
# 컴퓨터가 1부터 100 사이의 임의의 숫자를 선택합니다. 사용자가 숫자를 맞출 때까지 반복해서 숫자를 입력할 수 있도록 합니다. 사용자가 입력한 숫자가 컴퓨터가 선택한 숫자보다 작으면 "더 큰 숫자를 입력하세요." 라는 메시지를 출력합니다. 사용자가 입력한 숫자가 컴퓨터가 선택한 숫자보다 크면 "더 작은 숫자를 입력하세요." 라는 메시지를 출력합니다. 사용자가 숫자를 맞추면 시도한 횟수를 출력하고 게임을 종료합니다.
# 힌트: random 모듈을 사용하여 컴퓨터가 선택한 숫자를 생성합니다. while 루프를 사용하여 사용자가 숫자를 맞출 때까지 반복합니다. 조건문을 사용하여 사용자의 입력에 따라 메시지를 출력합니다.
import random
def number_guessing_game():
# 1부터 100 사이의 임의의 숫자를 선택합니다.
target_number = random.randint(1, 100)
attempts = 0
print("컴퓨터가 1부터 100 사이의 숫자를 선택했습니다. 숫자를 맞춰보세요.")
while True:
guess = int(input("숫자를 입력하세요: "))
attempts += 1
if guess < target_number:
print("더 큰 숫자를 입력하세요.")
elif guess > target_number:
print("더 작은 숫자를 입력하세요.")
else:
print(f"정답입니다! {attempts}번 시도했습니다.")
break
number_guessing_game()
'데이터 분석 부트캠프 > 주간학습일지' 카테고리의 다른 글
[패스트캠퍼스] 데이터 분석 부트캠프 16기 5주차 - Python을 활용한 데이터 시각화 (NumPy / Pandas / MatPlotLib / Seaborn) (3) | 2024.09.20 |
---|---|
[패스트캠퍼스] 데이터 분석 부트캠프 16기 4주차 - Python의 Selenium을 활용한 데이터 크롤링 (6) | 2024.09.13 |
[패스트캠퍼스] 데이터 분석 부트캠프 16기 3주차 - Python 자료형 (1) | 2024.09.03 |
[패스트캠퍼스] 데이터 분석 부트캠프 16기 2주차 - 기초수학/통계 (3) | 2024.08.30 |
[패스트캠퍼스] 데이터 분석 부트캠프 16기 1주차 - EXCEL (1) | 2024.08.23 |