Тестування



Скачати 91,34 Kb.
Сторінка1/9
Дата конвертації23.03.2020
Розмір91,34 Kb.
ТипПрограма
  1   2   3   4   5   6   7   8   9


Функції

Отже, ми можемо взяти будь-яку частину коду, дати їй ім’я і винести з

основного потоку програми. Наприклад, програма, яка шукає на відрізку від 0

до 99 всі числа, записані однаковими цифрами, може бути записана так:

n = 100

for x in range(n):

is_cool = x < 10 or (x / 10 == x % 10)

print x, is_cool

Або так:

def check_if_is_cool(number):

is_cool = number < 10 or (number / 10 == number % 10)

print number, is_cool

n = 100

for x in range(n):

check_if_is_cool(x)

Або взагалі так. І це буде найправильніший варіант, так як виведення даних має

відношення до самої програми і залишається в циклі, а в окрему функцію

виноситься лише перевірка, яка сама по собі може знадобитися і в іншому місці:

def is_cool(number): # limited by 0 <= number <= 99

return number < 10 or (int(number) / 10 == number % 10)

n = 100

for x in range(n):

print x, is_cool(x)

Функція задається за допомогою ключового слова def, за яким слідує назва

функції (за цією назвою ми далі можемо її викликати) та круглі дужки із



переліком аргументів функції. Наступна двокрапка вказує інтерпретатору чекати

на вкладений блок коду (як і у випадку з алгоритмічними конструкціями), далі

слідує сам блок -- тіло функції, виділене відступами, яке, звичайно, може

містити будь-які конструкції.

Аргументи функції -- це дані, які передаються у функцію при її виклику і мають

нею оброблятися для отримання результату. Сам отриманий результат

повертається за допомогою оператора return:

def is_repeat(string):

result = string == string[0] * len(string)

return result

При поверненні результату робота функції припиняється. Тобто приклад із

попередньої лекції:

n = int(raw_input('input N:'))

flag = False

for i in range(n):

if (i+1) % 11 == 0:

if (i+1) % 2 == 0:

flag = True

print flag

можна переписати наступним чином:

def dividable_11_2(x):

return x % 11 == 0 and x % 2 == 0

def has_dividable_11_2_before_n(n):

for i in range(n):

if dividable_11_2(i + 1):

return True

return False

n = int(raw_input('input N:'))




print has_dividable_11_2_before_n(n)

Тоді, щойно умова справдиться, функція поверне результат і закінчить роботу.

Якщо цикл закінчиться і результат досі не повернено, це означає, що умова не

справдилася для жодного з чисел на інтервалі і слід повернути False.





Поділіться з Вашими друзьями:
  1   2   3   4   5   6   7   8   9


База даних захищена авторським правом ©pedagogi.org 2019
звернутися до адміністрації

    Головна сторінка