Рубрики
Без рубрики

Программное обеспечение Está Cada VEZ Mais EM TUDO, E A A “Internet Das CoiSas” ém próximo Passo No Caminho da Nospython3 SA Sociedade Tecnológica. Программирование – упражнение 12 B – функция, которая возвращает значение

Это продолжение упражнений 12 A (функция и его определение) функции, которые … с меткой Python, программирование, учебник, начинающие.

Swift-Python (34 части серии)

Это продолжение Упражнение 12 A (функция и его определение)

Функция, которая возвращает значение

До сих пор мы написали функции, которые печатают значения на экран. Мы также можем вернуть значение из функции, назначить это значение переменной и использовать его в будущем.

Пример 1.

Ранее, когда мы написали Calc_area Функция, она распечатает строку, детализируя вход и вывод. Скажем, мы заинтересованы только в вычисленном результате, мы можем вернуть вычисленный результат с помощью вернуть ключевое слово, а затем вычисленное значение. Снаппин ниже модифицирован только для возврата компьютеров Calc_area Отказ

def calc_area(base, height):
    return 0.5 * base * height


# take the base and height from the user
base = float(input("Enter base: "))
height = float(input("Enter height: "))

# call the function here and pass base and height
# to it as the base and height are required
# the value is then assigned to a variable, `area`
area = calc_area(base, height)

# We then make use of the `area`
print(
    f"The area of a triagle of base, {base} and height, {height} is {area}")

Calc_area Теперь не связан с печатью, удобным для пользователя текстового повествования, какой вход и выход был вовлечен. Это оставлено в руках пользователя, чтобы решить. Это облегчает писать модульные тесты для Calc_area А также импортировать его как скрипт в других программах.

Пример 2.

Это функция, которая принимает список в качестве аргумента, и их сортирует его от самого низкого до самого высокого. Как работает эта работа сортировки?

Скажи, что нам дают список размеров, n Числа, используя две петли, вложенные на самом деле. Первый петли петли через список n - 1 раз. Второй делает, N - 2 раз. Во второй цикле мы проверяем, если первое значение превышает второго значения. Если это, мы своп ценности И тогда мы сравниваем второе место с третьей, а затем третьим и четвертым и так далее, пока мы не достигнем конца списка. Первый петли перемещается (шаги 1), то процесс запускается снова.

def sort_func(nums):
    """
    This function takes a list as an argument and
    returns a sorted version of it
    """
    n = len(nums)

    for i in range(n):
        for j in range(1, n):
            if nums[j - 1] > nums[j]:
                # swap
                nums[j - 1], nums[j] = nums[j], nums[j - 1]

    return nums


print(sort_func([6, 3, 2, 4, 1]))
print(sort_func(['w', 't', 'a', 'i']))

На этой линии nums [j - 1], [j], nums [j - 1] мы поменяем значения здесь, если nums [j - 1]> nums [j] Отказ Это «техника», используемая для замены в Python без внедрения переменной помощи.

Мы могли бы сделать,

temp = nums[j - 1]
nums[j - 1] = nums[j]
nums[j] = temp

Функция со многими аргументами

Мы пропустили отдельные значения (данные) или список в нашу функцию в качестве аргументов до сих пор. Теперь, скажем, мы хотели бы пройти несколько аргументов в функцию (мы все еще можем использовать список – вид), мы вынуждены дать функцию многочисленные параметры на создание, но есть простой подход в Python.

Пример 3.

Функция, которая принимает несколько строк в качестве аргумента и возвращает количество символов в каждом аргументе.

def many_args(s1, s2, s3, s4, s5):
    print(len(s1))
    print(len(s2))
    print(len(s3))
    print(len(s4))
    print(len(s5))

many_args('sandy', 'jude', 'mani', 'desmond', 'peter')

Мы сделали это правильно? Нет. Что если мы хотим пройти шестой аргумент? Мы должны обновить many_args функция. Любая другая программа, которая использовала many_args Функция должна обновить количество распущенных аргументов. Мы не хотим этого. Мы никогда не должны писать такие функции. Это мнение и выбор стиля.

* args и ** kwargs

В следующем упражнение Мы обсудим больше на структурах данных в Python, такие как список, словарь, набор и кортеж в некоторые детали. Эти структуры данных помогают в организации и управлении данными. Мы наткнулись на слово, уравновешенные. Ранее упомянутые структуры данных также позволяют итерации.

Список, кортеж, набор и словарь вкратце

В этом контексте мы заинтересованы в структурах данных в качестве аргументов, поэтому их должно быть достаточно.

  • Список – это запятая набор данных, разделенных квадратными скобками, [data1, data2, ...] где данные могут иметь любой тип данных или структуру данных. Это подразумевает, что мы можем иметь список, в котором есть другие списки в качестве данных.
  • Tupple это просто список, но ограничено скобками, (data1, data2, ...)
  • Набор похоже на список, но без дубликатов, разграниченных в курсовых скобках {data1, data2, ...} Отказ
  • Словарь – это параметры ключевой пары структуры данных. До сих пор списка, кортеж и набор проиндексированы (перечисляются) от 0 до n Отказ Для словаря мы используем ключ для доступа к значению. {Key1: Value2, Key2: Value2, ...} Отказ Мы можем закрепить ключи, значения и ключи и значения. Словарь больше похоже на множество, с уникальностью в клавишах.

* args.

Мы обсудили передачу нескольких данных в функцию в качестве аргументов, и мы увидели некоторые ограничения.

* args означает набор данных, таких как список, кортеж или набор. * args Это преобразование, посредством чего имя переменной, args предшествует звездочкой, * Отказ Это * Это делает переменную коллекцию данных или итеративным. Количество данных в переменной не указано. Это решает проблему нам пришлось обновить функцию, когда мы хотим пройти другие данные в функцию. Итак, * args может быть * uvere_var_name Отказ Один из ключевых концепций здесь, ограничивая количество параметров. Не более четырех и эти четыре должны быть названы аргументами, если что-то подобное происходит.

Пример 4.

Мы будем реализовать Пример 3 Но на этот раз используя * args концепция.

def many_args(*s):
    for i in s:
        print(i, , len(i))


many_args(
    'sandy', 'jude', 'mani', 'desmond', 'peter',
    'sandy', 'jude', 'mani', 'desmond', 'peter',
    'sandy', 'jude', 'mani', 'desmond', 'peter')

Мы смогли пройти несколько аргументов many_args Но наша функция просто имеет * S как параметр.

Передача списка в функцию, которая принимает * args

Мы также можем пройти список в many_args.

largs = ['candy', 'foo', 'bar', 'swift', 'python',
         'ryder', 'horse', 'rubber-duck', 'pizza']


many_args(largs)

Но каков был вывод? Попробуй это и посмотри. Что вы думаете, что случилось (посмотрите на пример 4)? Как мы это исправить?

Составьте аргумент списка как * list_arg

Это «Candy», «Foo», «бар», «SWIFT», «Python», «Ryder», «Лошадь», «Резина-утка», Был выходом из примера 5. Что это значит, что мы передали один аргумент на many_args И этот аргумент представляет собой список из девяти строк. Мы не проходили девять строк в качестве аргумента для many_args Отказ

Пройти список или кортеж как * args , нам нужно только предшествовать имя переменной звездочкой. Попробуйте и посмотрите сами.

many_args(*largs)


# output of *largs
# candy = 5
# foo = 3
# bar = 3
# swift = 5
# python = 6
# ryder = 5
# horse = 5
# rubber-duck = 11
# pizza = 5

** kwarg

** Kwarg Стенды за аргументы ключевых слов. ** Kwarg в основном * args , но мы передаем ключи наряду с ценностями. Таким образом, значения доступны ключами. Это как словарь.

Пример 5.

def many_args(**s):

    for key, value in s.items():
        print(f"{key}: {value}, has {len(value)} chars")


many_args(title="Swift python", author="Otu Michael",
          hobby="Staring at the screen")

Теперь мы можем получить доступ к пропущенным значениям, с их ключами.

Передача данных как словарь

Мы говорили в процессе, что словарь является структурой данных пары ключевой пары. Рассмотрим фрагмент ниже, где мы создаем словарь.

dict_data = {
    'title': "Swift python",
    'author': "Otu Michael",
    'hobby': "Staring at the screen"
}

Давайте пройдем * * Dict_data во многих_args

many_args(**dict_data)

# output
# title: Swift python, has 12 chars
# author: Otu Michael, has 11 chars
# hobby: Staring at the screen, has 21 chars

Что произойдет, когда ** опущен? Попробуй это. Добавляет ключ, решить проблему? Что вы заметили?

Аргументы по умолчанию

Так что, по вашему мнению, что произойдет, когда мы не передам аргумент к функции, которая принимает аргумент?

Конечно ошибка. Мы хотим, чтобы наши функции функционируем с данными по умолчанию, чтобы функция предположила (использовать) это значение, когда ни один не будет передан.

Пример 6.

Давайте воспользуемся Calc_area функция. Мы будем назначать значение по умолчанию к параметрам.

def calc_area(base=1, height=1):
    return 0.5 * base * height


# passed no args
print(calc_area())  # 0.5

# passed base but not height
print(calc_area(base=12))  # 0.6

# passed height but not base
print(calc_area(height=14))  # 0.7

Здесь параметры по умолчанию 1.

Примечание

  • Вы можете сделать umy_name Тогда звоните, uvere_name () .Эта будет работать так же, как func_name ()

Swift-Python (34 части серии)

Оригинал: “https://dev.to/otumianempire/python3-programming-exercise-12-b-1172”