class Monster:
def __init__(self,name): #__init__ 생성자 함수
self.name = name #self.name은 속성
def say(self):
print(f"I'm {self.name}")
shark = Monster("상어") #제일 먼저 init으로 가서 name 변수 위치로 들어감.
shark.say()
wolf = Monster("늑대") #제일 먼저 init으로 가서 name 변수 위치로 들어감.
wolf.say()
##참고한 영상 ## 스타트코딩
class Monster:
def __init__(self,name,age): #__init__ 생성자 함수
self.name = name #self.name은 속성
self.age = age
def say(self):
print(f"I'm {self.name} {self.age}살")
shark = Monster("상어",7) #제일 먼저 init으로 가서 name 변수 위치로 들어감.
wolf = Monster("늑대",3) #제일 먼저 init으로 가서 name 변수 위치로 들어감.
shark.say()
wolf.say()
# 다음 리스트에서 몇 가지 종류의 과일이 사용되었는지 구하는 프로그램을 만들어 보자
# [메론, 수박, 사과, 딸기, 메론, 수박, 사과, 메론, 딸기, 메론, 수박, 사과, 배]에서 사용된 과일의 종류는 5개 입니다.
# 참고 : {메론 : 4, 수박 : 3, 사과 : 3, 딸기 : 2, 배: 1}
fruit = ['메론', '수박', '사과', '딸기', '메론', '수박', '사과', '메론', '딸기', '메론', '수박', '사과', '배']
count = {}
for i in fruit :
if i not in count:
count[i] = 0
count[i] +=1
print(f'{fruit}에서')
print(f'사용된 과일의 종류는 {len(count)}개입니다.')
print()
print(f'참고: {count}')
딕셔너리를 활용해서 과일이 몇 개 사용되었는지 세고,
len() 함수를 사용해서 세트에 키(과일의 종류를 묻는 것이므로)가 몇 개 들어있는지 확인하기.
# 구의 부피와 겉넓이를 구하는 프로그램
# pi 값은 3.141592로 계산
pi = 3.141592
r = float(input('구의 반지름을 입력하세요: '))
volume = (4/3)*pi*r**3
surfacearea = 4*pi*r**2
print(f'구의 부피는 {volume}입니다.')
print(f'구의 겉넓이는 {surfacearea}입니다.')
finally 구문은 예외 처리 구문에서 가장 마지막에 사용할 수 있는 구문이다. 예외가 발생하든 발생하지 않든 무조건 실행할 때 사용하는 코드이다. 정리하면
try : 예외가 발생할 가능성이 있는 코드
except : 예외가 발생했을 때 실행할 코드
else : 예외가 발생하지 않았을 때 실행할 코드
finally : 무조건 실행할 코드
조합해보면 아래와 같다. 이 외에 조합은 실행 시 구문 오류 발생한다.
try + except
try + except + else
try + except + finally
try + except + else + finally
try + finally
#try except 구문으로 파일 열고 닫기
try:
file = open('hi.txt', 'w')
file.write('안녕!')
except:
print('오류 발생')
file.close()
print('#파일이 제대로 닫혔는지 확인하세요')
print('file.closed:', file.closed)
마지막에 finally 안쓰고도 try +except 구문만 해도 아무 문제 없다.
finally 구문은 반복문 또는 함수 내부에 있을 때 위력을 발휘한다. 🌟
def test():
print('test() 함수의 첫 줄')
try:
print('try 구문 시작')
return
print('try 구문의 return 키워드 뒤')
except:
print('except 구문 실행됨')
finally:
print('finally 구문 실행됨')
print('test() 함수의 마지막 줄')
test()
👩🏻💻 try 구문 내부에 return 키워드 있는게 포인트. try 구문 중간에서 탈출해도 finally 구문은 무조건 실행된다. 따라서 함수 내부에서 파일 처리 코드를 깔끔하게 만들고 싶을 때 finally 구문을 활용하는 경우가 많다. try구문에서 원할 때 return키워드로 빠져나가도 파일이 무조건 닫히기 때문 !
contact = {}
while True :
print('======연락처 프로그램======')
print('''
1. 추가 2. 목록보기 3. 검색 4. 수정 5. 삭제 9. 종료
===================================================
''')
menu = int(input('메뉴 선택:'))
if menu == 1:
print('연락처 추가 작업')
name = input('이름:')
tel = input('전화번호:')
contact.setdefault(name, tel) #딕셔너리에 요소 추가 하는 것
print('추가 작업 완료')
elif menu == 2:
print('연락처 목록보기')
for i, j in contact.items():
print(i,':',j)
elif menu == 3:
print('연락처 검색')
name = input('검색할 이름:')
if name in contact:
tel = contact[name]
print(name, ':', tel)
else:
print('등록되지 않은 이름입니다!')
elif menu == 4:
print('연락처 수정')
name = input('수정할 이름:')
if name not in contact:
print('등록되지 않은 이름입니다!')
else:
tel = input('새 전화번호:')
contact[name]= tel
print('수정 작업 완료')
elif menu == 5:
print('연락처 삭제')
name = input('삭제할 이름:')
if name in contact:
contact.pop(name) #삭제
print('삭제 작업 완료')
else :
print('등록되지 않은 이름입니다!')
elif menu == 9:
print('프로그램을 종료합니다!')
break
def decrement(value):
value -=1
n = 1
decrement(n)
print(n)
3. 사용자로부터 두 개의 정수를 입력 받아서 최대 공약수를 찾는 함수를 작성해보자. 가장 간단한 알고리즘을 생각해보시오.
[실행 결과]
첫번째 정수 : 36
두번째 정수 : 12
12
def gcd(x,y):
m = min(x,y)
for i in range(1, m+1):
if x%i==0 and y%i==0:
z=i
return z
a = int(input('첫번째 정수 : '))
b = int(input('두번째 정수 : '))
print(gcd(a,b))
4. 주어진 정수가 소수인지를 검사하는 함수 check_prime(n)를 작성하고 이 함수를 호출하여서 2부터 100 사이의 소수를 출력하여 보시오.
def check_prime(n):
cnt = 0
for i in range(2, n+1):
if n%i ==0:
cnt = cnt+1
if cnt == 1 :
print(n, end=" ")
for i in range(2,101):
check_prime(i)
5. 두 개의 수를 받아서 오름차순으로 반환하는 함수 getSorted(x,y)를 작성하고 반환한다. 함수가 2개의 값을 반환하려면 다음과 같이 한다.
[실행 명령문]
a, b = getSorted(30,20)
[실행 결과]
첫번째 정수 : 30
두번째 정수 : 20
(20,30)
def getSorted(x,y):
if x>y :
x,y = y,x
return x,y
a = int(input('첫번째 정수 : '))
b = int(input('두번째 정수 : '))
print(getSorted(a,b))