#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()