[TIL#8]Pythonベース-4



Table of Contents
1.基本文法

1.基本文法


処理
  • 異常
    エラー発生時処理の
  • try:
        print("나누기 전용 계산기")
        nums = []
        nums.append(int(input("첫번째 숫자를 입력하세요: ")))
        nums.append(int(input("두번째 숫자를 입력하세요: ")))
        print("{0} / {1} = {2}".format(nums[0], nums[1], nums[2]))
    except ValueError:
        print("에러가! 잘못된 값을 입력하셨습니다.")
    except ZeroDivisionError as err: # err 출력6
        print(err)
    except Exception as err: # 위의 에러 외 나머지 에러 처리 
        print("알 수 없는 에러가 발생하였습니다.")
        print(err) #  해당 에러메시지를 출력할 수도 있음.
  • エラー
  • try:
        print("한 자리 숫자 나누기 전용 계산기")
        num1 = int(input("첫번째 숫자를 입력하세요: "))
        num2 = int(input("두번째 숫자를 입력하세요: "))
        if num1 >=10 or num2 >=10:
            raise ValueError
        print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
    except ValueError:
        print("잘못된 값을 입력하였습니다. 한 자리 숫자로만 입력하세요.")
  • カスタム例外処理
    pythonで定義されたエラーに加えて、ユーザーは自分でエラーを定義して作成することができます.
  • class BigNumberError(Exception):
        def __init__(self, msg):
            self.msg = msg   
        def __str__(self):
            return self.msg
    try:
        print("한 자리 숫자 나누기 전용 계산기")
        num1 = int(input("첫번째 숫자를 입력하세요: "))
        num2 = int(input("두번째 숫자를 입력하세요: "))
        if num1 >=10 or num2 >=10:
            raise BigNumberError ("입력값 : {0} ,{1}".format(num1, num2)) # 여기서 raise 사용자가 정의  error 입력 
        print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
    except ValueError:
        print("잘못된 값을 입력하였습니다. 한 자리 숫자로만 입력하세요.")
    except BigNumberError as err:
        print("Error")
        print(err)
  • finally
    異常処理では、正常でもエラーでも値が出力されます.
  • class BigNumberError(Exception):
       def __init__(self, msg):
           self.msg = msg   
       def __str__(self):
           return self.msg
    try:
       print("한 자리 숫자 나누기 전용 계산기")
       num1 = int(input("첫번째 숫자를 입력하세요: "))
       num2 = int(input("두번째 숫자를 입력하세요: "))
       if num1 >=10 or num2 >=10:
           raise BigNumberError ("입력값 : {0} ,{1}".format(num1, num2)) # 여기서 raise 사용자가 정의  error 입력 
       print("{0} / {1} = {2}".format(num1, num2, int(num1 / num2)))
    except ValueError:
       print("잘못된 값을 입력하였습니다. 한 자리 숫자로만 입력하세요.")
    except BigNumberError as err:
       print("Error")
       print(err)
    finally:
       print("계산기를 사용해 주셔서 감사합니다.")
  • Quiz for異常処理
  • class SoldOutError(Exception):
        pass
    chicken = 10
    waiting = 1
    while(True):
        try:
            print("남은 치킨: {0}".format(chicken))
            order = int(input("치킨 몇 마리 주문하시겠습니까?"))
            if  order > chicken:
                print("재료가 부족합니다.")
            elif order <= 0:
                raise ValueError
            else:
                print("[대기번호 {0}] {1} 마리 주문이 완료되었습니다.".format(waiting, order))
                waiting += 1
                chicken -= order
            if chicken == 0:
                raise SoldOutError
        except ValueError:
               print("잘못된 값을 입력하였습니다.")
        except SoldOutError:
            print ("재고가 소진되어 더 이상 주문을 받지 않습니다.")
            break
  • モジュール
    必要な部品(自動車のタイヤ、バンパーなどをモジュールと呼ぶ).モジュールには拡張子があります.Pyim.
  • import theater_module
    theater_module.price(3)
    theater_module.price_morning(5)
    theater_module.price_solider(10)
    import theater_module as mv # as mv 는 theater_module을 호출 theater_module의 별명을 만들어준다고 생각하면 됨.
    mv.price(3)
    mv.price_morning(5)
    mv.price_solider(10)
    from theater_module import * # from random import *  이랑 같은거임
    price(3)
    price_morning(5)
    price_solider(10)
    from theater_module import price, price_morning # 특정 함수만 가져올수도 있다.
    price(3)
    price_morning(5)
    from theater_module import price_solider as price # 특정 함수를 불러오는데 그 함수의 별명도 만들 수 있다. 
    price(10)
    theater_moduel.py
    def price(people):
        print("{0}명 가격은 {1} 원입니다.".format(people, people * 10000))
    def price_morning(people):
        print("{0}명 조조 할인 가격은 {1} 원입니다.".format(people, people * 6000))
    def price_solider(people):
        print("{0}명 군인 할인 가격은 {1} 원입니다.".format(people, people * 5000))
    -パッケージ
    モジュールセット
    import travel.thailand # import 시 모듈이나 패키지만 가능 class는 안됨.
    trip_to = travel.thailand.ThailandPackage()
    trip_to.detail()
    from travel.thailand import ThailandPackage # module, package , class 모두 호출 가능
    trip_to = ThailandPackage()
    trip_to.detail()
    from travel import vietnam
    trip_to = vietnam.VietnamPackage()
    trip_to.detail ()
    travel = package
    thailand.py = module
    class ThailandPackage:
        def detail(self): # self 아무것도 받지 않고
            print("[태국 패키지 3 박5일] 방콕, 파타야 여행(야시장투어) 50만원")
  • _all_
  • import travel.thailand # import 시 모듈이나 패키지만 가능 class는 안됨.
    trip_to = travel.thailand.ThailandPackage()
    trip_to.detail()
    from travel.thailand import ThailandPackage # module, package , class 모두 호출 가능
    trip_to = ThailandPackage()
    trip_to.detail()
    from travel import vietnam
    trip_to = vietnam.VietnamPackage()
    trip_to.detail ()
    from travel import *
    trip_to = thailand.ThailandPackage()
    trip_to.detail()
    __init__모듈에서 아래와 같이 모듈 공개범위 설정해야 한다.
    __all__ = ["vietnam", "thailand"] # module 공개 범위 설정 가능
    ダイレクト
  • モジュール
    モジュールを作成し、正常に動作していることを確認する必要があります.
  • ```thailand.py 에서```
    class ThailandPackage:
        def detail(self): # self 아무것도 받지 않고
            print("[태국 패키지 3 박5일] 방콕, 파타야 여행(야시장투어) 50만원")
    if __name__ =="__main__": # 이것은 Thailand 모듈 직접 실행을 위해서 
        print("Thailand 모듈을 직접 실행")
        print("이 문장은 모듈을 직접 실행 할 때만 실행됩니다.")
        trip_to = ThailandPackage()
        trip_to.detail()
    else:
        print("Thailand 외부에서 모듈 호출")
  • パッケージ、モジュール位置
  • from travel import *
    import inspect # inspect를 활용하여 패키지, 모듈 위치 확인.
    import random
    print(inspect.getabsfile(random))
    print(inspect.getabsfile(thailand))
  • pypiを使用します.(python package index)
    複数のモジュール
  • をWebからダウンロード
  • 内蔵関数
  • input : 사용자 입력을 받는 함수
    langauge = input("무슨 언어를 좋아하세요?")
    print("{0} 은 아주 좋은 언어입니다.".format(langauge))
    dir : 어떤 객체를 넘겨줬을대 그 객체가 어떤 변수와 함수를 갖고 있은지 표시
    print(dir())
    import random
    print(dir(random))
  • 外付け関数
  • # glob : 경로 내의 폴더 / 파일 목록 조회 (윈도우에서 dir)
    import glob
    print(glob.glob("*.py")) # 확장자기 py인 모든 파일
    import os
    print(os.getcwd()) # 현재 디렉토리
    folder = "sample_dir"
    if os.path.exists(folder):
        print("이미 존재하는 폴더입니다.")
        os.rmdir(folder) # 폴더 삭제
        print(folder, "폴더를 삭제하였습니다.")
    else: 
        os.makedirs(folder) # 폴더 생성
        print(folder, "폴더를 생성하였습니다.")
    import time # 시간 외장함수
    print(time.localtime())
    print(time.strftime("%Y-%m-%d %H:%M:%S"))
    import datetime # 날짜 출력 외장함수
    print("오늘 날짜는", datetime.date.today()) # 오늘 날짜 출력하는법
    today = datetime.date.today() # 오늘 날짜 저장
    td = datetime.timedelta(days=100) # 100일 저장
    print("우리가 만난지 100일은", today + td) # 오늘부터 100일 후
  • Quiz
  • byme.py
    def sign():
        print("이 프로그램은 나도코딩에 의해 만들어졌습니다.")
        print("유튜브 : http://youtube.com")
        print("이메일: [email protected]")
    실행은 아래와 같이.
    import byme
    byme.sign()