Главная страница
Навигация по странице:

  • Модуль атауы

  • Ерекшеліктерді өңдеу

  • Finally блогы

  • ГЛАВА 2, 3, 4, 5. 2 тарау. Python Негіздері Бадарламаларды жазуа кіріспе


    Скачать 242.51 Kb.
    Название2 тарау. Python Негіздері Бадарламаларды жазуа кіріспе
    Дата07.02.2022
    Размер242.51 Kb.
    Формат файлаdocx
    Имя файлаГЛАВА 2, 3, 4, 5.docx
    ТипДокументы
    #354527
    страница4 из 10
    1   2   3   4   5   6   7   8   9   10

    Модульдер
    Python тіліндегі Модуль басқа бағдарламаларда қайта пайдалануға болатын коды бар жеке файлды білдіреді.

    Модульді құру үшін модульді білдіретін *.py кеңейтімі бар нақты файлды жасау керек. Файл атауы модульдің атауын білдіреді. Содан кейін бұл файлда бір немесе бірнеше функцияны анықтау керек.

    Бағдарламаның негізгі файлы деп аталсын hello.py. біз оған сыртқы модульдерді қосқымыз келеді.

    Мұны істеу үшін алдымен жаңа модульді анықтаңыз: біз шақыратын жаңа файл жасаңыз account.py. орналасқан қалтада hello.py. егер PyCharm немесе басқа IDE қолданылса, онда екі файл да бір жобаға сәйкес келеді.

    Python-дағы Модульдер



    Тиісінше, модуль account деп аталады. Және онда келесі кодты анықтаңыз:

    1

    2

    3

    4

    5

    6

    7

    def calculate_income(rate, money, month):

        if money <= 0:

            return 0

      

        for i in range(1, month+1):

            money = round(money + money * rate / 100 / 12, 2)

        return money


    Мұнда calculate_income функциясы анықталған, ол параметрлер ретінде салымның пайыздық мөлшерлемесін, салым сомасын және салым салынатын кезеңді алады және осы кезеңнің соңында алынған соманы есептейді.

    Файлда hello.py біз бұл модульді қолданамыз:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    #! Программа Банковский счет

    import account

      

     

    rate = int(input("Введите процентную ставку: "))

    money = int(input("Введите сумму: "))

    period = int(input("Введите период ведения счета в месяцах: "))

      

    result = account.calculate_income(rate, money, period)

    print("Параметры счета:\n", "Сумма: ", money, "\n", "Ставка: ", rate, "\n",

            "Период: ", period, "\n", "Сумма на счете в конце периода: ", result)


    Модульді пайдалану үшін оны импорт операторының көмегімен импорттау керек, содан кейін модульдің аты көрсетіледі: импорт шоты.

    Модульдің функционалдығына қол жеткізу үшін оның аттар кеңістігін алу керек. Әдепкі бойынша, ол модульдің атымен сәйкес келеді, яғни біздің жағдайда ол да аталады есеп.

    Модуль атауларының кеңістігін алғаннан кейін, біз оның функцияларына кеңістік схемасына сілтеме жасай аламыз.функциясы:

    1

    account.calculate_income(rate, money, period)


    Осыдан кейін біз негізгі сценарийді іске қоса аламыз hello.py және ол модульді қамтиды account.py. атап айтқанда, консоль шығысы келесідей болуы мүмкін:

    Пайыздық мөлшерлемені енгізіңіз: 10

    Соманы енгізіңіз: 300000

    Шотты жүргізу кезеңін айлармен енгізіңіз: 6

    Шот параметрлері:

    Сомасы: 300000

    Ставка: 10

    Кезең: 6

    Кезеңнің соңындағы шот сомасы: 315315.99

    Аттар кеңістігін орнату

    Әдепкі бойынша, модульді импорттаған кезде, ол сол атау кеңістігі арқылы қол жетімді. Алайда, біз бұл мінез-құлықты жоққа шығара аламыз. Сонымен, as кілт сөзі модульді басқа аттар кеңістігімен салыстыруға мүмкіндік береді. Мысалы:

    1

    2

    3

    4

    5

    import account as acc

     

    #...............

     

    result = acc.calculate_income(rate, money, period)


    Бұл жағдайда аттар кеңістігі acc деп аталады.

    Тағы бір теңшеу опциясы модульдің функционалдығын from кілт сөзін қолдана отырып, ағымдағы модульдің Ғаламдық аттар кеңістігіне импорттауды қамтиды:

    1

    2

    3

    4

    5

    from account import calculate_income

     

    #...............

     

    result = calculate_income(rate, money, period)


    Бұл жағдайда біз account модулінен Ғаламдық аттар кеңістігіне calculate_income функциясын импорттаймыз. Сондықтан біз оны модуль атауларының кеңістігін сол файлда анықталғандай көрсетпестен пайдалана аламыз.

    Егер есеп модулінде бірнеше функция болса, оларды Ғаламдық аттар кеңістігіне бір өрнекпен импорттауға болады:

    1

    2

    3

    4

    5

    from account import *

     

    #...............

     

    result = calculate_income(rate, money, period)


    Бірақ айта кету керек, жаһандық аттар кеңістігіне импорттау функция атауларының қақтығыстарына әкелуі мүмкін. Мысалы, егер бізде бірдей файлда бірдей функция анықталған болса, онда функцияны шақырған кезде қате пайда болуы мүмкін. Сондықтан импортты Ғаламдық аттар кеңістігіне пайдаланудан аулақ болған жөн.
    Модуль атауы

    Жоғарыдағы мысалда модуль hello.py, ол негізгі болып табылады, модульді пайдаланады account.py. модульді іске қосу кезінде hello.py бағдарлама барлық қажетті жұмыстарды орындайды. Алайда, егер біз модульді бөлек іске қоссақ account.py өзі консольде ештеңе көрмейді. Өйткені, модуль функцияны анықтайды және басқа әрекеттерді орындамайды. Бірақ біз модульді жасай аламыз account.py оны өздігінен де, басқа модульдерге де қосуға болады.
    Модульді орындау кезінде қоршаған орта оның атын анықтайды және оны жаһандық айнымалыға тағайындайды __name__ (екі жағында екі астын сызу). Егер модуль іске қосылса, онда оның атауы __main__ (сонымен қатар әр жағынан екі астын сызу). Егер модуль басқа модульде қолданылса, онда орындау кезінде оның атауы py кеңейтімінсіз файл атауына ұқсас болады. Біз оны қолдана аламыз. Сонымен, файл мазмұнын өзгертіңіз account.py:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    16

    17

    18

    19

    20

    def calculate_income(rate, money, month):

        if money <= 0:

            return 0

     

        for i in range(1, month+1):

            money = round(money + money * rate / 100 / 12, 2)

        return money

     

         

    def main():

        rate = 10

        money = 100000

        period = 12

     

        result = calculate_income(rate, money, period)

        print("Параметры счета:\n", "Сумма: ", money, "\n", "Ставка: ", rate, "\n",

              "Период: ", period, "\n", "Сумма на счете в конце периода: ", result)

     

    if __name__=="__main__":

        main()

    Сонымен қатар, негізгі функция функцияны тексеру үшін анықталған. Біз файлды бірден іске қоса аламыз account.py барлығынан бөлек және кодты тексеріңіз.

    Негізгі функцияны шақыруға назар аудару керек:

    1

    2

    if __name__=="__main__":

        main()


    Айнымалы _ _ name _ _ модуль атауын көрсетеді. Тікелей іске қосылатын негізгі модуль үшін Бұл айнымалы файл атауына қарамастан әрқашан __main__ мәніне ие болады.
    Сондықтан, егер біз сценарийді іске қосатын болсақ account.py бөлек, Python _ _ name _ _ айнымалысына _ _ main _ _ мәнін тағайындайды, содан кейін if өрнегінде сол файлдан main функциясын шақырады.

    Алайда, егер біз басқа сценарийді іске қосатын болсақ, және бұл - account.py -біз көмекші ретінде қосамыз, account.py _ _ name _ _ айнымалы есептік жазба мәніне ие болады. Және, тиісінше, файлдағы негізгі әдіс account.py жұмыс істемейді.

    Модуль атауын тексеретін бұл тәсіл негізгі әдісті шақырудан гөрі ұсынылған тәсіл болып табылады.

    Файлда hello.py сондай-ақ, модульдің негізгі екендігін тексеруге болады (дегенмен, бұл міндетті емес):

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    12

    13

    14

    15

    #! Программа Банковский счет

    import account

     

     

    def main():

        rate = int(input("Введите процентную ставку: "))

        money = int(input("Введите сумму: "))

        period = int(input("Введите период ведения счета в месяцах: "))

     

        result = account.calculate_income(rate, money, period)

        print("Параметры счета:\n", "Сумма: ", money, "\n", "Ставка: ", rate, "\n",

              "Период: ", period, "\n", "Сумма на счете в конце периода: ", result)

               

    if __name__ == "__main__":

        main()


    Ерекшеліктерді өңдеу

    Python-да бағдарламалау кезінде біз қателіктердің екі түріне тап болуымыз мүмкін. Бірінші тип синтаксистік қателерді білдіреді (syntax error). Олар бастапқы кодты жазу кезінде бағдарламалау тілінің синтаксисін бұзу нәтижесінде пайда болады. Егер мұндай қателер болса, бағдарламаны құрастыру мүмкін емес. Қандай да бір даму ортасында жұмыс істеген кезде, мысалы, PyCharm-да, ide-нің өзі синтаксистік қателерді бақылай алады және оларды қандай да бір жолмен ерекшелей алады.
    Қателердің екінші түрі-орындау қателері (runtime error). Олар қазірдің өзінде құрастырылған бағдарламада оны орындау барысында пайда болады. Мұндай қателіктер ерекше жағдайлар деп те аталады. Мысалы, өткен тақырыптарда біз санды жолға түрлендіруді қарастырдық:

    1

    2

    3

    string = "5"

    number = int(string)

    print(number)


    Бұл сценарий сәтті құрастырылып, орындалады, өйткені "5" жолын санға айналдыруға болады. Алайда тағы бір мысал келтірейік:

    1

    2

    3

    string = "hello"

    number = int(string)

    print(number)


    Осы сценарийді орындау кезінде ValueError-дан ерекшелік алынып тасталады, өйткені "hello" жолын санға айналдыруға болмайды. Бір жағынан, мұнда жүз жол санды білдірмейтіні анық, бірақ біз қолданушыны енгізумен айналысуымыз мүмкін, ол біз күткендей емес:

    1

    2

    3

    string = input("Введите число: ")

    number = int(string)

    print(number)


    Ерекшелік болған кезде бағдарламаның жұмысы үзіледі және мұндай мінез-құлықты болдырмау және Python-да ерекше жағдайларды өңдеу үшін try дизайны бар..келесі ресми анықтамасы бар except:

    1

    2

    3

    4

    try:

        инструкции

    except [Тип_исключения]:

        инструкции


    Ерекшелік туындауы мүмкін барлық негізгі код try кілт сөзінен кейін орналастырылады. Егер осы кодта ерекшелік пайда болса, онда try блогындағы кодтың жұмысы үзіліп, орындау except блогына өтеді.
    Ерекшелік кілт сөзінен кейін қандай ерекшелік өңделетінін көрсетуге болады (мысалы, ValueError немесе KeyError). Except сөзінен кейін, келесі ағызу кезінде ерекшелік блогының нұсқаулары ерекше жағдай туындаған кезде орындалады.
    Жолды санға түрлендіру мысалында ерекше жағдайды өңдеуді қарастырыңыз:

    1

    2

    3

    4

    5

    6

    try:

        number = int(input("Введите число: "))

        print("Введенное число:", number)

    except:

        print("Преобразование прошло неудачно")

    print("Завершение программы")


    Жолды енгізіңіз:
    Нөмірді енгізіңіз: Сәлем

    Түрлендіру сәтсіз аяқталды

    Бағдарламаны аяқтау

    Консоль шығысынан көрініп тұрғандай, жолды енгізген кезде консольге санның шығуы болмайды және бағдарламаның орындалуы except блогына өтеді.
    Дұрыс санды енгізіңіз:
    Нөмірді енгізіңіз: 22

    Енгізілген Сан: 22

    Бағдарламаны аяқтау

    Енді бәрі жақсы орындалады, ерекшелік болмайды және сәйкесінше except блогы орындалмайды.
    Жоғарыдағы мысалда кодта пайда болуы мүмкін барлық ерекшеліктер бірден өңделді. Алайда, біз except сөзінен кейін оны көрсете отырып, өңделетін ерекшеліктің түрін анықтай аламыз:

    1

    2

    3

    4

    5

    6

    try:

        number = int(input("Введите число: "))

        print("Введенное число:", number)

    except ValueError:

        print("Преобразование прошло неудачно")

    print("Завершение программы")


    Егер жағдай бағдарламада әр түрлі ерекшеліктер пайда болуы мүмкін болса, онда біз оларды қосымша except өрнектерін қолдана отырып жеке-жеке өңдей аламыз:

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    try:

        number1 = int(input("Введите первое число: "))

        number2 = int(input("Введите второе число: "))

        print("Результат деления:", number1/number2)

    except ValueError:

        print("Преобразование прошло неудачно")

    except ZeroDivisionError:

        print("Попытка деления числа на ноль")

    except Exception:

        print("Общее исключение")

    print("Завершение программы")


    Егер жолды санға түрлендіру нәтижесінде ерекшелік болса, онда ол except ValueError блогымен өңделеді. Егер екінші сан нөлге тең болса, яғни нөлге бөлу болады, содан кейін zerodivisionerror ерекшелік пайда болады және оны zerodivisionerror except блогы өңдейді.
    Ерекшелік түрі барлық ерекше жағдайларға ұшырайтын жалпы ерекшелікті білдіреді. Сондықтан, бұл жағдайда ValueError немесе ZeroDivisionError түрін көрсетпейтін кез-келген ерекшелік ерекше ерекшелік блогында өңделеді:.
    Finally блогы

    Ерекше жағдайларды өңдеу кезінде қосымша finally блогын пайдалануға болады. Бұл блоктың ерекшелігі-бұл ерекшелік жасалған-жасалмағанына қарамастан орындалады:
    Әдетте, finally блогы файлдарды жабу сияқты пайдаланылатын ресурстарды босату үшін қолданылады.
    Алып тастау туралы ақпарат алу

    As операторының көмегімен біз барлық алып тастау туралы ақпаратты айнымалыға жібере аламыз, оны except блогында пайдалануға болады:

    1

    2

    3

    4

    5

    6

    try:

        number = int(input("Введите число: "))

        print("Введенное число:", number)

    except ValueError as e:

        print("Сведения об исключении", e)

    print("Завершение программы")


    Қате енгізу мысалы:
    Нөмірді енгізіңіз: fdsf

    Алып тастау туралы мәліметтер invalid literal for Int () with base 10: 'fdsf'

    Бағдарламаны аяқтау

    Ерекшеліктер жасау

    Кейде осы немесе басқа ерекшелікті қолмен жасау қажет. Ол үшін raise операторы қолданылады.

    1

    2

    3

    4

    5

    6

    7

    8

    9

    10

    11

    try:

        number1 = int(input("Введите первое число: "))

        number2 = int(input("Введите второе число: "))

        if number2 == 0:

            raise Exception("Второе число не должно быть равно 0")

        print("Результат деления двух чисел:", number1/number2)

    except ValueError:

        print("Введены некорректные данные")

    except Exception as e:

        print(e)

    print("Завершение программы")


    Ерекше жағдайды шақырған кезде біз оған хабарлама жібере аламыз, содан кейін оны пайдаланушыға шығаруға болады:
    Бірінші санды енгізіңіз: 1

    Екінші санды енгізіңіз: 0

    Екінші сан 0-ге тең болмауы керек

    Бағдарламаны аяқтау
    1   2   3   4   5   6   7   8   9   10


    написать администратору сайта