Proc3. Описать процедуру Mean($$X$$, $$Y$$, $$AMean$$, $$GMean$$), вычисляющую среднее арифметическое $$AMean = (X + Y)/2$$ и среднее геометрическое $$GMean = \sqrt{X * Y}$$ двух положительных чисел $$X$$ и $$Y$$ ($$X$$ и $$Y$$ — входные, $$AMean$$ и $$GMean$$ — выходные параметры вещественного типа). С помощью этой процедуры найти среднее арифметическое и среднее геометричеQское для пар $$(A, B), (A, C), (A, D)$$, если даны $$A, B, C, D$$.
Решение:
В питоне нет как такового понятия процедуры. Есть функции которые могут возвращать None. Также изменять значение переменных, которые передаются функции в виде параметров, идеологически не верно. Я вижу два обходных решения передавать массивы и использовать Глобальные переменные. Это всё плохо!
Переделываем процедуруMean($$X$$, $$Y$$, $$AMean$$, $$GMean$$) в функции AMean($$X$$, $$Y$$) и GMean($$X$$, $$Y$$).
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import math def AMean(X,Y): return (X + Y)/2 def GMean(X, Y): return math.sqrt(X*Y) print('A: ') A = float(input()) print('B: ') B = float(input()) print('C: ') C = float(input()) print('D: ') D = float(input()) print(AMean(A,B),' ',GMean(A,B)) print(AMean(A,C),' ',GMean(A,C)) print(AMean(A,D),' ',GMean(A,D)) |
Решаем с помощью передачи массивов, как параметров:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import math def Mean(X,Y,AMean,GMean): AMean[0] = (X + Y)/2 GMean[0] = math.sqrt(X*Y) print('A: ') A = float(input()) print('B: ') B = float(input()) print('C: ') C = float(input()) print('D: ') D = float(input()) AMean,GMean =[0],[0] Mean(A,B,AMean,GMean) print(AMean[0],' ',GMean[0]) Mean(A,C,AMean,GMean) print(AMean[0],' ',GMean[0]) Mean(A,D,AMean,GMean) print(AMean[0],' ',GMean[0]) |
Другие задачи из раздела Proc можно посмотреть здесь.
Комментарии: