#예외 처리
try:
10/0
except ZeroDivisionError as e:
print(e)
try:
file=open('없는 파일.txt' ,'r')
except FileNotFoundError as e : #오류 발생 시 실행하는 블럭
print(str(e))
else: #오류가 발생안하면 실행하는 블럭
data=file.readLine()
file.close
try:
#오류를 일부러 발생시키기
raise NotImplementedError
print("실행문")
except e:
print("오류 발생함 ")
print(e)
else:
print("오류 발생안함")
finally:
#리소스를 정리
print("오류 발생 하든 안하든 수행함 ")
import ex17_imported
ex17_imported.myFunc1()
ex17_imported.myFunc2()
ex17_imported.printName()
#특정함수만 임포트 하기
from ex17_imported import myFunc1
myFunc1()
# myFunc2() error
def myFunc1():
print("myFunc1")
def myFunc2():
print("myFunc2")
#__name__ : 자신이 호출하면 "__main__"
# :다른곳에서 호출하면 "ex17_imported"
def printName():
print(__name__)
printName()
#class
class Student :
name="홍길동"
#생성자 함수
def __init__(self,name):
self.name=name
#클래스 멤버 함수는 self 꼭 넣어준다
def printMyName(self):
print(self.name)
#r객체 생성
student=Student('변사또')
print(student.name)
student.printMyName()
#클래스의 상속
class Parent:
name="부모"
def printMyName(self):
print(self.name)
#소활호 안에 상속할 클래스 명을 넣는다
class Child(Parent):
name="자녀"
#메소드 오버라이딩 : 자식 함수가 부모함수를 덮어쓴다
#부모에게 똑같은 함수가 있으면, 부모의 함수를 쓴다.
def printMyName(self):
print(self.name)
def printParentName(self):
print(super().name)
childObj=Child()
print(childObj.name)
childObj.printMyName()
childObj.printParentName()
#부모 클래스의 함수를 쓴다
class Parent2:
def sum(self):
print('부모함수')
class Child2(Parent2):
def __sum__(self):
print('자식함수')
child2=Child2()
child2.sum()
#함수 function
def myFunc():
print("myFunc() 호출됨")
myFunc()
#매개변수가 있는 함수
def myFunc2(name1, name2):
print("myFunc2() 호출됨", name1, name2)
myFunc2("홍길동", "변사또")
#리턴값이 있는 함수
def myFunc3(name):
return "이름은" +name
result=myFunc3("홍길동")
print(result)
#매개변수를 배열로 넣어주기
def myFunc4(*params):
for param in params:
print(param)
myFunc4(10,20,30,40,50)
#매개변수에 초기값 넣어주기
def myFunc5(name1, name2="변사또"):
print(name1,name2)
myFunc5("홍길동")
myFunc5("홍길동","춘향이")
#기본값이 있는 매개변수는 항상 뒤쪽에 위치해야한다
#잘못된 예 )
#def myFunc6(name1="홍길동" , name2)
#로컬 변수의 범위
name="hong"
def printName(name):
print(name)
print(name)
printName("tom")
global_name="hong"
def printName2():
print(global_name)
printName2()
def printer():
var ="Local variable"
print(var) #지역변수 출력
var="Global variable"
printer()
print(var) #전역변수 출력
'''
def printer():
global var #함수 안에서 전역변수 사용시
print(var)
var="Local variable"
print(var)
var="Global variable"
printer()
'''
#while(조건문):
# 수행문1
# 수행문2
# 증감문(맨끝에)
index=0
while(index<10):
print(index)
index+=1
#index++ -- 증감연산자 없음
#9부터 0까지 출력
index=9
while(index>=0):
print(index ,end= ' ')
index-=1
#1부터 100까지 10의 배수만 출력
print()
index=1
while(index<=100):
if(index%10==0):
print(index,end=" ")
index+=1
index+=1
#1부터 100까지 3의 배수만 빼고 출력하되,index가 90넘으면 정지
print()
index=0
while(index<=100):
index+=1
if(index%3==0):
continue
if(index>90):
break
print(index,end=" ")
#continue, break문을 사용하시오
#무한반복문에서 input("숫자를 입력하세요: ") 입력 받아
#입력 받은 숫자를 출력하고
#0이면 무한반복을 중단합니다. 라고 출력하고 break 하시오
while True:
string=input("숫자를 입력하세요")
num=int(string)
if num == 0:
print("무한반복을 중단합니다.")
break
print(num)
#자판기 프로그램을 작성해보자
#기본 조건 : 잔돈 :5000원
# 재고 : 커피 3개, 콜라 2개, 쥬스 1개
#입력 조건 메뉴 0: 커피 1 : 콜라 2 : 쥬스
# # 돈 1000 or 2000
# 커피 : 1000, 콜라 : 800, 쥬스 :700
# #출력조건 정상조건 : "커피(콜라. 쥬스) 가 나왔습니다."
# 재고를 1개씩 소진한다
# 재고 부족시 : 커피(콜라,쥬스)가 재고 소진되었습니다.
# 투입 금액 부족시 : 돈이 부족합니다.
#ord_money=5000
#print() 줄바꿈 없는함수
print("my ", end=' ')
print("dream ", end=' ')
print("is ", end=' ')
print("Programming ", end= ' ')
#키보드로부터 글자입력받기
'''
message=input("글자를 입력하세요 ")
print(message)
numStr=input("숫자를 입력하세요")
num=int(numStr)
print(num*2)
'''
#for (초기화; 조건; 증감) 이런 형태가 없음
for i in range(10):
print(i)
for i in range(1,100):
print(i)
for i in range(1,100,2): #2씩 증가
print(i)
for i in range(100,0,-1):
print(i)
for i in reversed(range(10)):
print(i)
#이중 for문으로 구구단을 출력하자
for i in range(2,10):
for j in range(1,10):
print(i*j, end=' ')
print(' ')
#for 문으로 배열(리스트) 출력
myArray=[10,20,30]
#for i in range(3):
# print(myArray[i])
for num in myArray:
print(num)
#for 문으로 튜플 출력
myTuple=(10,20,30)
#for i in range(3):
# print(myTuple[i])
for num in myTuple:
print(num)
#for 문으로 딕셔너리 출력
myDic={1:'hong',2:'tom',3:'hana'}
#for i in range(3):
# print(myDic[i+1])
for key,value in myDic.items():
print(key,value)
#2중 for문으로 별찍기
for i in range(1,6):
for j in range(1,6):
if (j==i):
print('*', end=' ')
else:
print(' ', end=' ')
print(' ')
#리스트 안에 for문 포함시키기
array=[1,2,3,4,5,]
for num in array:
print(num)
result=[]
for num in array:
result.append(num*2)
print(result)
#배열안에 for 문 쓰기
result=[num *2 for num in array]
print(result)
#배열안에 for 문 +if 문 쓰기
#각 배열의 값을 *2 하면서 3의 배수인것만 추출
result=[num *2 for num in array if num%3==0]
print(result)
#for문을 여러번 쓸수 있다
result =[x*y for x in range(2,10)
for y in range(1,10)]
print(result)
#for문과 if 문을 여러번쓸 수 있다
result =[x*y for x in range(2,10) if x%2==0
for y in range(1,10) if y%3==0]
print(result)