본문 바로가기

언어/Python

반복문~ 함수~ 예외처리

#예외 처리 

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)

'언어 > Python' 카테고리의 다른 글

외장함수  (0) 2019.11.25
내장함수  (0) 2019.11.25
자판기 프로그램 만들기 !  (0) 2019.11.22
문자열~리스트~조건,반복문  (0) 2019.11.21
변수~문자열  (0) 2019.11.20