sugenius
[초보자를 위한 파이썬 300제] 201 to 300 본문
초보자를 위한 파이썬 300제
👉 함수 (201 to 240)
# 09. 파이썬 함수
# 201 ~ 210
# ___________________________________
#"비트코인" 문자열을 화면에 출력하는 print_coin() 함수를 정의
def print_coin():
print("비트코인")
#함수호출
print_coin()
for i in range(100) :
print_coin()
def print_coins() :
for i in range(100) :
print("비트코인")
def message() :
print("A")
print("B")
message()
print("C")
message()
# 09. 파이썬 함수
# 211 ~ 220
# ___________________________________
def 함수(문자열) :
print(문자열)
함수("안녕")
함수("Hi")
'''출력:
안녕
Hi
'''
def 함수(a, b) :
print(a + b)
함수(3, 4)
함수(7, 8)
def print_with_smile(string) :
print(string , ":D")
print_with_smile("안녕하세요")
def print_upper_price(현재가격) :
print(현재가격*1.3)
def print_sum (a,b) :
print(a+b)
def print_arithmetic_operation(a,b) :
print(a,"+",b,"=",a+b)
print(a,"-",b,"=",a-b)
print(a,"*",b,"=",a*b)
print(a,"/",b,"=",a/b)
def print_max (a,b,c) :
max_val = 0
if a>max_val:
max_val = a
if b > max_val :
max_val = b
if c > max_val :
max_val = c
print(max_val)
# 09. 파이썬 함수
# 221 ~ 230
# ___________________________________
def print_reverse (string) :
print(string[::-1])
print_reverse("python") #출력:nohtyp
def print_score(score_list) :
print(sum(score_list)/len(score_list))
print_score ([1, 2, 3]) #출력:2.0
def print_even(list) :
for i in list :
if i%2 == 0 :
print(i)
print_even ([1, 3, 2, 10, 12, 11, 15])
'''출력 :
2
10
12
'''
def print_keys(dic) :
for k in dic.keys() :
print(k)
print_keys ({"이름":"김말똥", "나이":30, "성별":0})
'''출력:
이름
나이
성별
'''
my_dict = {"10/26" : [100, 130, 100, 100],
"10/27" : [10, 12, 10, 11]}
def print_value_by_key (my_dict,k) :
print ( my_dict[k] )
print_value_by_key (my_dict, "10/26") #출력 : [100, 130, 100, 100]
#입력 문자열을 한 줄에 다섯글자씩 출력
def print_5xn(string) :
ch = int(len(string)/5)
for i in range(ch+1) :
print(string[i*5:i*5+5])
print_5xn("아이엠어보이유알어걸")
#문자열과 한줄에 출력될 글자 수를 입력을 받아 한 줄에 입력된 글자 수만큼 출력
def printmxn(line , num) :
ch = int( len(line)/num )
for x in range(ch+1) :
print(line[x*num : x*num+num])
printmxn("아이엠어보이유알어걸", 3)
'''출력:
아이엠
어보이
유알어
걸
'''
#연봉을 입력받아 월급을 계산. 1원 미만은 버림
def calc_monthly_salary(sal) :
monsal = int(sal/12) #입력된 값을 12로 나누고 형변환을 해서 1원 미만을 절사함
return monsal
calc_monthly_salary(12000000)
def my_print (a, b) :
print("왼쪽:", a)
print("오른쪽:", b)
my_print(b=100, a=200)
'''출력:
왼쪽: 200
오른쪽: 100
'''
# 09. 파이썬 함수
# 231 ~ 240
# ___________________________________
def make_url(string) :
return "www." + string + ".com"
make_url("naver")
#문자열을 입력받아 각 문자들로 구성된 리스트로 반환
def make_list(string) :
list = []
for i in string :
list.append(i) #틀린 오답 : list.append(string[i])
return list
make_list("abcd") #출력 ['a', 'b', 'c', 'd']
#문자열을 list로 형변환하면 쉽게 문제를 해결
def make_list (string) :
return list(string)
#하나의 리스트를 입력받아, 짝수들을 추출하여 리스트로 반환
def pickup_even(list) :
result = []
for i in list :
if i%2 == 0 :
result.append(i)
return result
pickup_even([3, 4, 5, 6, 7, 8])
#콤마가 포함된 문자열 숫자를 입력받아 정수로 변환
def convert_int(string) :
return int(string.replace(",",""))
convert_int("1,234,567")
👉 모듈 (241 to 250)
# 10. 파이썬 모듈
# 241 ~ 250
# ___________________________________
#현재시간
#datetime 모듈을 사용해서 현재 시간을 화면에 출력
import datetime
now = datetime.datetime.now()
print(now) #출력 : 2021-03-21 06:23:37.722876
#현재시간의 타입
#datetime 모듈의 now 함수의 리턴 값의 타입을 화면에 출력
import datetime
now = datetime.datetime.now()
print(now, type(now)) #출력 : 2021-03-21 06:30:08.947733 <class 'datetime.datetime'>
#timedelta
#datetime 모듈의 timedelta를 사용해서 오늘로부터 5일, 4일, 3일, 2일, 1일 전의 날짜를 화면에 출력
import datetime
now = datetime.datetime.now()
for day in range(5,0,-1):
delta = datetime.timedelta(days=day)
date = now - delta
print(date)
'''출력 :
2021-03-16 06:32:43.259229
2021-03-17 06:32:43.259229
2021-03-18 06:32:43.259229
2021-03-19 06:32:43.259229
2021-03-20 06:32:43.259229
'''
#strftime
#trftime 메서드. 현재시간을 얻어온 후 다음과 같은 포맷으로 시간을 출력
import datetime
now = datetime.datetime.now()
print(now.strftime("%H:%M:%S")) #출력 : 06:48:45
#strptime
#datetime.datetime.strptime 메서드를 사용하면 문자열 형식의 시간을
#datetime.datetime 타입의 시간 값으로 만들어줌
#"2020-05-04"의 문자열을 시간 타입으로 변환
import datetime
day = "2020-05-04"
ret = datetime.datetime.strptime(day, "%Y-%m-%d")
print(ret, type(ret)) #출력 : 2020-05-04 00:00:00 <class 'datetime.datetime'>
#sleep 함수
#time 모듈, datetime 모듈을 사용해서 1초에 한 번 현재 시간을 출력하는 코드
import time
import datetime
'''
while True :
now = datetime.datetime.now()
print(now)
time.splee(1)
'''
#모듈 임포트
#모듈을 임포트하는 4가지 방식
'''
'''
#os 모듈
#os 모듈의 getcwd 함수를 호출하여 현재 디렉터리의 경로
import os
ret = os.getcwd()
print(ret,type(ret)) #출력 : C:\python_study <class 'str'>
#rename 함수
#바탕화면에 텍스트 파일을 하나 생성한 후 os 모듈의 rename 함수를 호출하여 해당 파일의 이름을 변경
'''
import os
os.rename("C:/Users/hyunh/Desktop/before.txt", "C:/Users/hyunh/Desktop/after.txt")
'''
#numpy
#numpy 모듈의 arange 함수를 사용해서 0.0 부터 5.0까지 0.1씩 증가하는 값을 화면에 출력
import numpy
for i in numpy.arange(0, 5, 0.1):
print(i)
👉 클래스 (251 to 290)
# 11. 파이썬 클래스
# 251 ~ 260
# ___________________________________
#클래스, 객체, 인스턴스 개념 알기
#클래스 정의
class Human :
pass
#참고 파이썬 pass와 continue
#https://zetawiki.com/wiki/%ED%8C%8C%EC%9D%B4%EC%8D%AC_pass%EC%99%80_continue_%EC%B0%A8%EC%9D%B4%EC%A0%90
#인스턴스 생성
# (Human) 클래스의 인스턴스를 "생성" 하고 이를 areum 변수로 바인딩
class Human :
pass
areum = Human()
#클래스 생성자-1
#(Human) 클래스에 "응애응애"를 출력하는 생성자를 추가
class Human :
def __init__(self) :
print("응애응애")
areum = Human()
# 클래스 생성자-2
# (Human) 클래스에 (이름, 나이, 성별)을 받는 생성자를 추가
class Human :
def __init__(self, name, age, sex) :
self.name = name
self.age = age
self.sex = sex
areum = Human("아름", 25, "여자")
print(areum.name)
#인스턴스 속성에 접근
#생성한 인스턴스의 이름, 나이, 성별을 출력
class Human:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
areum = Human("아름", 25, "여자")
print(areum.age)
#클래스 메소드 - 1
#(Human) 클래스에서 이름, 나이, 성별을 출력하는 who() 메소드를 추가
class Human :
def __init__(self,name,age,sex) :
self.name = name
self.age = age
self.sex = sex
def who(self) :
print("이름: {} 나이: {} 성별: {}" .format(self.name,self.age,self.sex))
areum = Human("아름",25,"여자")
areum.who()
#Human.who(areum)
#출력:이름: 조아름, 나이: 25, 성별: 여자
# 클래스 메소드 - 2
class Human:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def who(self):
print("이름: {} 나이: {} 성별: {}".format(self.name, self.age, self.sex))
def setInfo(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
areum = Human("불명", "미상", "모름")
areum.who() # Human.who(areum)
areum.setInfo("아름", 25, "여자")
areum.who() # Human.who(areum)
#클래스 소멸자
class Human:
def __init__(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
def __del__(self):
print("나의 죽음을 알리지마라")
def who(self):
print("이름: {} 나이: {} 성별: {}".format(self.name, self.age, self.sex))
def setInfo(self, name, age, sex):
self.name = name
self.age = age
self.sex = sex
areum = Human("아름", 25, "여자")
del(areum) #출력 : 나의 죽음을 알리지 말라
# 11. 파이썬 클래스
# 261 ~ 270
# ___________________________________
class Stock:
def __init__(self, name, code):
self.name = name
self.code = code
삼성 = Stock("삼성전자", "005930")
print(삼성.name)
print(삼성.code)
class Stock:
def __init__(self, name, code):
self.name = name
self.code = code
def set_name(self, name):
self.name = name
a = Stock(None, None)
a.set_name("삼성전자") # Stock.set_name(a, "삼성전자")
print(a.name)
class Stock:
def __init__(self, name, code):
self.name = name
self.code = code
def set_name(self, name):
self.name = name
def set_code(self, code):
self.code = code
a = Stock(None, None)
a.set_code("005930")
print(a.code)
class Stock:
def __init__(self, name, code):
self.name = name
self.code = code
def set_name(self, name):
self.name = name
def set_code(self, code):
self.code = code
def get_name(self):
return self.name
def get_code(self):
return self.code
삼성 = Stock("삼성전자", "005930")
print(삼성.name)
print(삼성.code)
print(삼성.get_name())
print(삼성.get_code())
class Stock:
def __init__(self, name, code, per, pbr, dividend):
self.name = name
self.code = code
self.per = per
self.pbr = pbr
self.dividend = dividend
def set_name(self, name):
self.name = name
def set_code(self, code):
self.code = code
def get_name(self):
return self.name
def get_code(self):
return self.code
def set_per(self, per):
self.per = per
def set_pbr(self, pbr):
self.pbr = pbr
def set_dividend(self, dividend):
self.dividend = dividend
종목 = []
삼성 = Stock("삼성전자", "005930", 15.79, 1.33, 2.83)
현대차 = Stock("현대차", "005380", 8.70, 0.35, 4.27)
LG전자 = Stock("LG전자", "066570", 317.34, 0.69, 1.37)
종목.append(삼성)
종목.append(현대차)
종목.append(LG전자)
for i in 종목:
print(i.code, i.per) # i-> Stock 클래스의 객체를 바인딩하기 때문
# 11. 파이썬 클래스
# 271 ~ 280
# ___________________________________
#Account 클래스
#Account 클래스를 생성한 후 생성자를 구현
#생성자에서는 예금주와 초기 잔액만 입력 받음
#은행이름은 SC은행으로 계좌번호는 3자리-2자리-6자리 형태로 랜덤하게 생성
import random
class Account:
def __init__(self, name, balance):
self.name = name
self.balance = balance
self.bank = "SC은행"
num1 = random.randint(0, 999)
num2 = random.randint(0, 99)
num3 = random.randint(0, 999999)
num1 = str(num1).zfill(3) # 1 -> '1' -> '001'
num2 = str(num2).zfill(2) # 1 -> '1' -> '01'
num3 = str(num3).zfill(6) # 1 -> '1' -> '0000001'
self.account_number = num1 + '-' + num2 + '-' + num3 # 001-01-000001
kim = Account("김민수", 100)
print(kim.name)
print(kim.balance)
print(kim.bank)
print(kim.account_number)
'''출력:
김민수
100
SC은행
900-61-930922
'''
import random
class Account:
# class variable
account_count = 0
def __init__(self, name, balance):
self.deposit_count = 0
self.deposit_log = []
self.withdraw_log = []
self.name = name
self.balance = balance
self.bank = "SC은행"
# 3-2-6
num1 = random.randint(0, 999)
num2 = random.randint(0, 99)
num3 = random.randint(0, 999999)
num1 = str(num1).zfill(3) # 1 -> '1' -> '001'
num2 = str(num2).zfill(2) # 1 -> '1' -> '01'
num3 = str(num3).zfill(6) # 1 -> '1' -> '0000001'
self.account_number = num1 + '-' + num2 + '-' + num3 # 001-01-000001
Account.account_count += 1
@classmethod
def get_account_num(cls):
print(cls.account_count) # Account.account_count
def deposit(self, amount):
if amount >= 1:
self.deposit_log.append(amount)
self.balance += amount
self.deposit_count += 1
if self.deposit_count % 5 == 0: # 5, 10, 15
# 이자 지금
self.balance = (self.balance * 1.01)
def withdraw(self, amount):
if self.balance > amount:
self.withdraw_log.append(amount)
self.balance -= amount
def display_info(self):
print("은행이름: ", self.bank)
print("예금주: ", self.name)
print("계좌번호: ", self.account_number)
print("잔고: ", self.balance)
def withdraw_history(self):
for amount in self.withdraw_log:
print(amount)
def deposit_history(self):
for amount in self.deposit_log:
print(amount)
k = Account("Kim", 1000)
k.deposit(100)
k.deposit(200)
k.deposit(300)
k.deposit_history()
k.withdraw(100)
k.withdraw(200)
k.withdraw_history()
# 11. 파이썬 클래스
# 281 ~ 290
# ___________________________________
class 차 :
def __init__(self,바퀴,가격) :
self.바퀴 = 바퀴
self.가격 = 가격
car = 차 (2,1000)
print(car.바퀴)
print(car.가격)
#클래스 상속
#차 클래스를 상속받은 자전차 클래스
class 차 :
def __init__(self,바퀴,가격) :
self.바퀴 = 바퀴
self.가격 = 가격
class 자전거(차):
pass
#부모 클래스 메서드 호출
class 차:
def __init__(self, 바퀴, 가격):
self.바퀴 = 바퀴
self.가격 = 가격
def 정보(self):
print("바퀴수 ", self.바퀴)
print("가격 ", self.가격)
class 자동차(차):
def __init__(self, 바퀴, 가격):
super().__init__(바퀴, 가격)
class 자전차(차):
def __init__(self, 바퀴, 가격, 구동계):
super().__init__(바퀴, 가격)
self.구동계 = 구동계
def 정보(self):
super().정보()
print("구동계 ", self.구동계)
bicycle = 자전차(2, 100, "시마노")
bicycle.정보()
#메서드 오버라이딩
class 부모:
def 호출(self):
print("부모호출")
class 자식(부모):
def 호출(self):
print("자식호출")
나 = 자식()
나.호출()
#생성자
class 부모:
def __init__(self):
print("부모생성")
class 자식(부모):
def __init__(self):
print("자식생성")
나 = 자식()
#부모클래스 생성자 호출
class 부모:
def __init__(self):
print("부모생성")
class 자식(부모):
def __init__(self):
print("자식생성")
super().__init__()
나 = 자식()
👉 파일 입출력과 예외처리(291 to 300)
# 12. 파일 입출력과 예외처리
# 291 ~ 300
# ___________________________________
#파일 쓰기
#바탕화면에 '매수종목1.txt' 파일을 생성한 후 다음과 같이 종목코드를 파일에 써보
'''
f = open("C:/Users/hyunh/Desktop/매수종목1.txt", mode="wt", encoding="utf-8")
f.write("005930\n")
f.write("005380\n")
f.write("035420")
f.close()
'''
#CSV 파일 쓰기
#바탕화면에 '매수종목.csv' 파일을 생성한 후
# 다음과 같이 종목코드와 종목명을 파일에 써보세요.
# 인코딩은 'cp949'를 사용해야함
'''
import csv
f = open("C:/Users/hyunh/Desktop/매수종목.csv", mode="wt", encoding="cp949", newline='')
writer = csv.writer(f)
writer.writerow(["종목명", "종목코드", "PER"])
writer.writerow(["삼성전자", "005930", 15.59])
writer.writerow(["NAVER", "035420", 55.82])
f.close()
'''
#파일 읽기
'''
f = open("C:/Users/hyunh/Desktop/매수종목1.txt", encoding="utf-8")
lines = f.readlines() # python list
codes = []
for line in lines:
code = line.strip() #'\n'
codes.append(code)
print(codes)
f.close()
'''
#예외처리
#문자열 PER (Price to Earning Ratio) 값을 실수로 변환할 때 에러가 발생함
#예외처리를 통해 에러가 발생하는 PER은 0으로 출력하라
per = ["10.31", "", "8.00"]
for i in per:
try:
print(float(i))
except:
print(0)
#예외처리 및 리스트에 저장
#문자열로 표현된 PER 값을 실수로 변환한 후 이를 새로운 리스트에 저장
per = ["10.31", "", "8.00"]
new_per = []
for i in per:
try:
v = float(i)
except:
v = 0
new_per.append(v)
print(new_per)
#특정 예외만 처리하기
#어떤 값을 0으로 나누면 ZeroDivisionError 에러가 발생함
#try ~ except로 모든 에러에 대해 예외처리하지 말고 ZeroDivisionError 에러만 예외처리
try:
b = 3 / 0
except ZeroDivisionError:
print("0으로 나누면 안되요")
#예외의 메시지 출력하기
'''
try:
실행코드
except 예외 as 변수:
예외처리코드
'''
data = [1, 2, 3]
for i in range(5) :
print(data[i])
#try, except, else, finally 구조 사용해보기
'''
try:
실행 코드
except:
예외가 발생했을 때 수행할 코드
else:
예외가 발생하지 않았을 때 수행할 코드
finally:
예외 발생 여부와 상관없이 항상 수행할 코드
'''
per = ["10.31", "", "8.00"]
for i in per:
try:
print(float(i))
except:
print(0)
else:
print("clean data")
finally:
print("변환 완료")
'Python' 카테고리의 다른 글
파이썬 개발 역량을 높이는 파이썬 문법과 특징, 코딩 스타일 (0) | 2021.03.22 |
---|---|
Pycharm 파이참 커뮤니티 다운로드 (0) | 2021.03.22 |
[초보자를 위한 파이썬 300제] 101 to 200 (0) | 2021.03.20 |
[초보자를 위한 파이썬 300제] 001 to 100 (0) | 2021.03.20 |
Vscode 에서 python 개발 환경 구축 (0) | 2021.03.11 |