Функции и нахождение средних

#python #function #parameters

#python #функция #параметры

Вопрос:

Я начал Python на прошлой неделе, и это вопрос, который мой учитель хочет, чтобы мы решили: напишите функцию с именем average_of_3, которая принимает три целых числа в качестве параметров и возвращает среднее из трех целых чисел в виде числа. Например, вызов average_of_3(4, 7, 13) возвращает 8.

Функции меня очень смущают, но это то, что у меня есть до сих пор…

 def average(num1, num2, num3): 
  avg = (num1)   (num2)   (num3)/3
  return (avg)

num1 = int(input("Enter a number: "))
num2 = int(input("Enter a number: "))
num3 = int(input("Enter a number: "))
  

Я не уверен, правильно это или нет… Я также не уверен, что делать после этого.

Комментарии:

1. 1) У вашей функции нет имени, требуемого назначением. 2) Ваша функция выполняет вычисления неправильно (умножение / деление перед сложением / вычитанием) 3) Вам нужно вызвать функцию с вашими 3 входными значениями, а затем что-то сделать с результатом. Надеюсь, это поможет.

Ответ №1:

Думайте о функции как о поваре. Вы даете повару некоторые ингредиенты, а повар возвращает вам вкусное блюдо. Когда вы определяете функцию, вы «учите шеф-повара готовить», сообщая Python, какие ингредиенты он берет, что он делает с ингредиентами и что он возвращает. Таким образом, вы можете спросить своего пользователя, какие «ингредиенты они хотят дать вашему шеф-повару», например:

 a = int(input("Enter a number: "))
b = int(input("Enter a number: "))
c = int(input("Enter a number: "))
  

Но вам все равно нужно дать шеф-повару эти ингредиенты. Вы делаете это, вызывая функцию следующим образом:

 answer = average(a, b, c)
  

Примечание: у шеф-повара могут быть свои собственные имена для ингредиентов, поэтому, даже если вы определили их как a, b, c при запросе пользователя, когда вы передаете их функции, функция обращается к ним как num1, num2, num3 , потому что так определяется функция.

Затем вы можете делать все, что захотите answer , например print(answer)

О, и еще одно: помните PEMDAS / BEDMAS / как бы вы ни называли порядок операций в математике?Такая концепция существует и в программировании. Если вы просто сделаете

 avg = 1   2   3 / 3
  

Вы получаете avg = 4 . Вместо этого заключите всю сумму в круглые скобки, чтобы фактически получить среднее значение

 avg = (1   2   3) / 3
  

Ответ №2:

это можно сделать с помощью необязательного аргумента или используя список ваших значений

 def averaged(*args):
    return sum(args)/len(args)
#or
def averaged1(args: list):
    return sum(args)/len(args)
#------------------------------
print(averaged(3,4,5))

print(averaged1([3,4,5]))
  
 4.0
4.0
  

вы могли бы просто реализовать это следующим образом:

 num = None
nums = []
while True:
    num = int(input("value: "))
    if num !=0: nums.append(num)
    else: break

def averaged1(args: list):
    return sum(args)/len(args)

print(averaged1(nums))
  
 value: 1
value: 2
value: 3
value: 0 # <-- breaks here
2.0
  

Комментарии:

1. действительно, правильно, но давайте не будем путать его с *args или lambda

Ответ №3:

 def average_of_3(num1, num2, num3):
  return (num1   num2   num3)/3

# call your func
average_of_3(4, 7, 13)
  

Вам нужно передать свои числа в качестве аргументов функции, если вы хотите увидеть использование выходных данных print()