Среди трех чисел найти среднее если среди чисел есть равные вывести сообщение ошибка python

Вводятся три разных числа. Найти, какое из них является средним (больше одного, но меньше другого). Решаем задачу на языках Python, Pascal, Си

Перейти к содержанию

Среди трех чисел найти среднее

Просмотров 23.1к. Обновлено 15 октября 2021

Вводятся три разных числа. Найти, какое из них является средним (больше одного, но меньше другого).

Проверить, лежит ли первое число между двумя другими. При этом может быть два случая:

  • первое больше второго и первое меньше третьего,
  • первое меньше второго и первое больше третьего.

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

  • второе больше первого и меньше третьего,
  • второе меньше первого и больше третьего.

Если эти варианты также не вернули истину, то остается только один вариант — посередине лежит третье число. Это при условии, что никакие два числа из трех не могут быть равны между собой. Иначе и здесь надо использовать логические выражения.

Pascal

даны три числа найдите среднее паскаль


var
a1, a2, a3: integer;

begin
write ('Введите три числа: ');
readln (a1, a2, a3);

if ((a1 > a2) and (a1 < a3)) or ((a1 < a2) and (a1 > a3)) then
writeln(a1)
else
if ((a2 > a1) and (a2 < a3)) or ((a2 < a1) and (a2 > a3)) then
writeln(a2)
else
writeln(a3);

end.



Введите три числа: 3 5 4
4

Язык Си


#include < stdio.h>
main() {
int a, b, c;
scanf("%d%d%d", &a,&b,&c);
if (a > b && a < c || a < b && a > c)
printf("%dn", a);
else
if (b > a && b < c || b < a && b > c)
printf("%dn", b);
else
printf("%dn", c);
}



110 111 109
110

Python

найти среднее число из 3 чисел Python


print('Введите три числа: ')
a = int(input())
b = int(input())
c = int(input())

if b < a < c or c < a < b:
print('Среднее:', a)
elif a < b < c or c < b < a:
print('Среднее:', b)
else:
print('Среднее:', c)



Введите три числа:
453
244
901
Среднее: 453

Basic-256


print "Введите три числа: "
input a
input b
input c
print "Среднее: ";
if a > b and a < c or a < b and a > c then
print a
else
if b > a and b < c or b < a and b > c then
print b
else
print c
endif
endif



Введите три числа:
45
60
54
Среднее: 54

Given 3 numbers, I need to find which number lies between the two others.

ie,given 3,5,2
I need 3 to be returned.

I tried to implement this by going thru all three and using if else conditions to check if each is between the other two.But this seems a naive way to do this.Is there a better way?

asked Apr 2, 2012 at 15:55

damon's user avatar

2

Put them in a list, sort them, pick the middle one.

answered Apr 2, 2012 at 15:56

Sven Marnach's user avatar

Sven MarnachSven Marnach

558k115 gold badges924 silver badges826 bronze badges

5

>>> x = [1,3,2]
>>> sorted(x)[len(x) // 2]
2

answered Apr 2, 2012 at 16:01

jamylak's user avatar

jamylakjamylak

126k30 gold badges229 silver badges229 bronze badges

The fastest obvious way for three numbers

def mean3(a, b, c):
    if a <= b <= c or c <= b <= a:
        return b
    elif b <= a <= c or c <= a <= b:
        return a
    else:
        return c

answered Apr 2, 2012 at 16:45

Zaur Nasibov's user avatar

Zaur NasibovZaur Nasibov

22k12 gold badges55 silver badges82 bronze badges

1

What you want is the median. You can use this code below for any number of numbers:

import numpy
numbers = [3,5,2]
median = numpy.median(numbers)

for a custom solution you can visit this page.

answered Apr 2, 2012 at 16:08

Thanasis Petsas's user avatar

Thanasis PetsasThanasis Petsas

4,3185 gold badges30 silver badges56 bronze badges

2

You could do

numbers = [3, 5, 2]
sorted(numbers)[1]

answered Apr 2, 2012 at 15:57

David Robinson's user avatar

David RobinsonDavid Robinson

76.3k16 gold badges163 silver badges183 bronze badges

1

This is a O(n) implementation of the median using cumulative distributions. It’s faster than sorting, because sorting is O(ln(n)*n).

def median(data):
    frequency_distribution = {i:0 for i in data}
    for x in data:
        frequency_distribution[x] =+ 1
    cumulative_sum = 0
    for i in data:
        cumulative_sum += frequency_distribution[i]
        if (cumulative_sum > int(len(data)*0.5)):
            return i

answered Apr 2, 2012 at 16:15

luke14free's user avatar

luke14freeluke14free

2,5211 gold badge17 silver badges25 bronze badges

2

Check this (Suppose list already sorted):

def median(list):
    ceil_half_len = math.ceil((len(list)-1)/2)   # get the ceil middle element's index
    floor_half_len = math.floor((len(list)-1)/2) # get the floor middle element 's index'
    return (list[ceil_half_len] + list[floor_half_len]) / 2

answered Oct 29, 2013 at 3:29

Zhe's user avatar

1

If it’s just for 3 numbers. First find the max and the min numbers in list. Remove them, the remainder of list is the medium. If you don’t want to use the «if-else» or «sorted()» that is.

def mid(a,b,c):
    num = [a,b,c]
    small, big = min(num), max(num)
    num.remove(small)
    num.remove(big)
    return num[0] # return the remainder

answered Apr 25, 2020 at 7:38

samv's user avatar

samvsamv

212 silver badges4 bronze badges

Here is my attempt using a more pythonic version

def median(a):
    sorted_a = sorted(a)
    if len(a) % 2 == 0:
        median = sum(sorted_a[(len(a)//2)-1:(len(a)//2)+1])/2.
    else:
        median = sorted_a[(len(a)-1)//2]

>>> x = [64630, 11735, 14216, 99233, 14470, 4978, 73429, 38120, 51135, 67060]
>>> median(x)
>>> 44627.5
>>> y = [1, 2, 3]
>>> median(y)
>>> 2

answered Jan 12, 2017 at 7:28

Michael's user avatar

MichaelMichael

2,4041 gold badge35 silver badges55 bronze badges

If you wish to avoid sorting, you can do:

def find_median(x):
    return sum(x) - max(x) - min(x)

answered Mar 30, 2017 at 19:11

Cabbage soup's user avatar

Cabbage soupCabbage soup

1,3041 gold badge18 silver badges26 bronze badges

Given 3 numbers, I need to find which number lies between the two others.

ie,given 3,5,2
I need 3 to be returned.

I tried to implement this by going thru all three and using if else conditions to check if each is between the other two.But this seems a naive way to do this.Is there a better way?

asked Apr 2, 2012 at 15:55

damon's user avatar

2

Put them in a list, sort them, pick the middle one.

answered Apr 2, 2012 at 15:56

Sven Marnach's user avatar

Sven MarnachSven Marnach

558k115 gold badges924 silver badges826 bronze badges

5

>>> x = [1,3,2]
>>> sorted(x)[len(x) // 2]
2

answered Apr 2, 2012 at 16:01

jamylak's user avatar

jamylakjamylak

126k30 gold badges229 silver badges229 bronze badges

The fastest obvious way for three numbers

def mean3(a, b, c):
    if a <= b <= c or c <= b <= a:
        return b
    elif b <= a <= c or c <= a <= b:
        return a
    else:
        return c

answered Apr 2, 2012 at 16:45

Zaur Nasibov's user avatar

Zaur NasibovZaur Nasibov

22k12 gold badges55 silver badges82 bronze badges

1

What you want is the median. You can use this code below for any number of numbers:

import numpy
numbers = [3,5,2]
median = numpy.median(numbers)

for a custom solution you can visit this page.

answered Apr 2, 2012 at 16:08

Thanasis Petsas's user avatar

Thanasis PetsasThanasis Petsas

4,3185 gold badges30 silver badges56 bronze badges

2

You could do

numbers = [3, 5, 2]
sorted(numbers)[1]

answered Apr 2, 2012 at 15:57

David Robinson's user avatar

David RobinsonDavid Robinson

76.3k16 gold badges163 silver badges183 bronze badges

1

This is a O(n) implementation of the median using cumulative distributions. It’s faster than sorting, because sorting is O(ln(n)*n).

def median(data):
    frequency_distribution = {i:0 for i in data}
    for x in data:
        frequency_distribution[x] =+ 1
    cumulative_sum = 0
    for i in data:
        cumulative_sum += frequency_distribution[i]
        if (cumulative_sum > int(len(data)*0.5)):
            return i

answered Apr 2, 2012 at 16:15

luke14free's user avatar

luke14freeluke14free

2,5211 gold badge17 silver badges25 bronze badges

2

Check this (Suppose list already sorted):

def median(list):
    ceil_half_len = math.ceil((len(list)-1)/2)   # get the ceil middle element's index
    floor_half_len = math.floor((len(list)-1)/2) # get the floor middle element 's index'
    return (list[ceil_half_len] + list[floor_half_len]) / 2

answered Oct 29, 2013 at 3:29

Zhe's user avatar

1

If it’s just for 3 numbers. First find the max and the min numbers in list. Remove them, the remainder of list is the medium. If you don’t want to use the «if-else» or «sorted()» that is.

def mid(a,b,c):
    num = [a,b,c]
    small, big = min(num), max(num)
    num.remove(small)
    num.remove(big)
    return num[0] # return the remainder

answered Apr 25, 2020 at 7:38

samv's user avatar

samvsamv

212 silver badges4 bronze badges

Here is my attempt using a more pythonic version

def median(a):
    sorted_a = sorted(a)
    if len(a) % 2 == 0:
        median = sum(sorted_a[(len(a)//2)-1:(len(a)//2)+1])/2.
    else:
        median = sorted_a[(len(a)-1)//2]

>>> x = [64630, 11735, 14216, 99233, 14470, 4978, 73429, 38120, 51135, 67060]
>>> median(x)
>>> 44627.5
>>> y = [1, 2, 3]
>>> median(y)
>>> 2

answered Jan 12, 2017 at 7:28

Michael's user avatar

MichaelMichael

2,4041 gold badge35 silver badges55 bronze badges

If you wish to avoid sorting, you can do:

def find_median(x):
    return sum(x) - max(x) - min(x)

answered Mar 30, 2017 at 19:11

Cabbage soup's user avatar

Cabbage soupCabbage soup

1,3041 gold badge18 silver badges26 bronze badges

Среди трех чисел найти среднее

Вводятся три разных числа. Найти, какое из них является средним (больше одного, но меньше другого).

Проверить, лежит ли первое число между двумя другими. При этом может быть два случая:

  • первое больше второго и первое меньше третьего,
  • первое меньше второго и первое больше третьего.

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

  • второе больше первого и меньше третьего,
  • второе меньше первого и больше третьего.

Если эти варианты также не вернули истину, то остается только один вариант — посередине лежит третье число. Это при условии, что никакие два числа из трех не могут быть равны между собой. Иначе и здесь надо использовать логические выражения.

Как найти среднее значение списка в Python

В этой статье мы рассмотрим различные способы найти среднее значение списка в списке Python. Среднее значение – это значение, которое представляет весь набор элементов данных или элементов.

Формула: Среднее значение = сумма чисел / общее количество.

Методы поиска среднего значения списка

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

  • Функция mean();
  • Встроенный метод sum();
  • Методы lambda() и reduce();
  • Метод operator.add().

Функция mean()

Python 3 имеет модуль статистики, который содержит встроенную функцию для вычисления среднего числа. Функция statistics.mean() используется для вычисления среднего входного значения или набора данных.

Функция mean() принимает список, кортеж или набор данных, содержащий числовые значения, в качестве параметра и возвращает среднее значение элементов данных.

В приведенном выше фрагменте кода мы использовали метод statistics.round() для округления выходного среднего до определенного десятичного значения.

Использование функции sum()

Функция statistics.sum() также может использоваться для поиска среднего значения данных в списке Python.

Функция statistics.len() используется для вычисления длины списка, т.е. количества элементов данных, присутствующих в списке.

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

Примечание: среднее значение = (сумма) / (количество).

3. Использование reduce() и lambda()

Мы можем использовать функцию reduce() вместе с функцией lambda().

Функция reduce() в основном используется для применения определенной (входной) функции к набору элементов, переданных в функцию.

  • Первоначально функция reduce() применяет переданную функцию к первым двум последовательным элементам и возвращает результат.
  • Далее мы применяем ту же функцию к результату, полученному на предыдущем шаге, и к элементу, следующему за вторым элементом.
  • Этот процесс продолжается, пока не дойдет до конца списка.
  • Наконец, результат возвращается на терминал или экран в качестве вывода.

Функция lambda() используется для создания и формирования анонимных функций, то есть функции без имени или подписи.

Функция operator.add() для поиска среднего значения списка

Модуль operator.add() содержит различные функции для эффективного выполнения основных вычислений и операций.

Функцию operator.add() можно использовать для вычисления суммы всех значений данных, присутствующих в списке, с помощью функции reduce().

Примечание: среднее значение = (сумма) / (длина или количество элементов)

Метод NumPy average() для вычисления среднего значения списка

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

Как найти среднее значение списка в Python

FavoriteДобавить в избранное

Главное меню » Программирование » Python » Как найти среднее значение списка в Python

PythonNet

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

  • Нахождение среднего значения списка с помощью функций sum() и len().
  • Нахождение среднего значения списка с помощью функции mean() путем импорта модуля статистики.
  • Нахождение среднего значения списка из функции mean() путем импорта модуля numpy.
  • Нахождение среднего значения списка из функции reduce() путем импорта функций functools и lambda().

Требования

Любая версия Python, которая будет установлена ​​в вашей системе Linux, python3 предустановлен в последней версии Ubuntu.

Создание файла Python

Чтобы писать код на Python в Ubuntu, вы должны создать файл Python с расширением «.py», создать файл «python_file.py» с помощью указанной ниже команды:

  • # используется для написания комментариев (пояснительных операторов), они не выполняются во время выполнения программы.
  • Нажмите Ctrl + s, чтобы сохранить вновь созданный файл python, и Ctrl + x, чтобы выйти из файла.

Методы поиска среднего значения списка в Python

Общий синтаксис для поиска среднего по списку упомянут ниже:

Следуйте любому из приведенных ниже методов, которые помогут вам найти среднее значение списка чисел в python:

Как найти среднее значение списка с помощью функций sum() и len()

Первый способ найти среднее — с помощью «функций sum() и len()». Функция sum() вычисляет сумму всех значений в числовом списке, а функция len(), сокращенная до length, дает количество значений в списке. Ниже приведен синтаксис для вычисления среднего значения с использованием функций sum() и len():

Список содержит числовые значения которых среднее должно быть вычислено. Напишите приведенный ниже код в «python_file.py», чтобы найти среднее значение по списку:

Чтобы получить желаемый результат, выполните код, написанный в «python_file.py», с помощью указанной ниже команды:

Как найти среднее значение по функции mean() из модуля статистики

Другой способ вычислить среднее значение списка — использовать функцию mean(), импортировав модуль статистики. Функция mean принимает числовой список в качестве аргумента и выполняет функцию среднего значения в списке, но мы не можем использовать эту функцию без импорта модуля статистики, ниже указан его синтаксис:

  • statistics: встроенный модуль в python, для выполнения средней функции импортировать этот модуль
  • list: содержит числовые значения, среднее значение которых должно быть вычислено.

Напишите приведенный ниже код в python_file.py для вычисления среднего значения списка с помощью функции mean:

Чтобы получить желаемый результат, выполните код, написанный в python_file.py, с помощью указанной ниже команды:

Как найти среднее значение с помощью функции среднего из модуля numpy

Мы можем вычислить среднее значение списка с помощью функции mean() из модуля «numpy». Модуль numpy — популярный выбор для работы с большими многомерными массивами. Он также имеет огромное количество математических функций, которые можно применять к массивам для выполнения множества задач. Одним из наиболее важных является метод mean(), который возвращает среднее значение для предоставленного списка, но этот список должен иметь тип массива.

Чтобы использовать модуль numpy для вычисления среднего значения, сначала вам необходимо установить его с помощью указанной ниже команды:

Ниже приводится синтаксис для вычисления среднего значения с использованием модуля «numpy»:

  • numpy: библиотека, которую нужно импортировать, чтобы использовать функцию среднего для вычисления среднего значения.
  • list: содержит числовые значения, среднее значение которых должно быть вычислено.

Напишите приведенный ниже код в «python_file.py», чтобы найти среднее значение списка, используя функцию mean из модуля numpy:

Чтобы получить желаемый результат, выполните код, написанный в «python_file.py», с помощью указанной ниже команды:

Как найти среднее с помощью функций сокращения и лямбда

Чтобы найти среднее значение списка с помощью reduce() и лямбда, вам необходимо импортировать модуль functools, чтобы использовать функцию reduce() в Python. Функция lambda() может использоваться для вычисления суммы, а функция reduce() может использоваться для итерации по списку.

  • «i, j»: аргументы лямбды.
  • i + j: выражение для вычисления суммы списка с использованием аргументов лямбда.
  • len(): дает количество значений в списке.

Напишите приведенный ниже код в «python_file.py», чтобы найти среднее значение списка с помощью функций lambda() и reduce() из модуля «functools»:

Чтобы получить желаемый результат, выполните код, написанный в «python_file.py», с помощью указанной ниже команды:

Заключение

Python предоставляет множество встроенных модулей для использования математических функций. Для расчета среднего значения списка используется метод. В статье 4 описаны методы с примерами для расчета среднего значения списка; используя функции sum() и len(), используя функцию mean() из статистического модуля, используя функцию mean() из модуля numpy и используя функции lambda() и reduce(). Прочитав эту статью, вы научитесь различным методам нахождения среднего значения на языке Python.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Почему не проходят два теста? Пишет: «Ошибка выполнения». Я уж не знаю что делать. Мне кажется это через тип данных. Как исправить?

n = int(input())
a = list(map(float, input().split()))
s = 0
count = 0
for i in range(n):
    if a[i]>0:
        s += a[i]
        count += 1
print("%.2f" % (s/count)) 

Задана последовательность вещественных чисел. Найти среднее
арифметическое положительных чисел.

Входные данные

В первой строке задано число количество действительных чисел n (0 < n
≤ 100). В следующей строке заданы n чисел, значения которых не
превосходят по модулю 100.

Выходные данные

Вывести среднее арифметическое положительных чисел с 2 десятичными
знаками. В случае отсутствия положительных чисел вывести сообщение
«Not Found» (без кавычек).

Задача

jfs's user avatar

jfs

51.6k11 золотых знаков106 серебряных знаков302 бронзовых знака

2

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

if a[i] > 0:
    # ваш код далее

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

То есть, как-то так:

n = int(input())
a = list(map(float, input().split()))

assert len(a) == n # проверяем, что длина массива равна количеству заданных чисел

a = [x for x in a if x >= 0] # обновляем массив, очищая его от отрицательных чисел

if len(a) == 0: # если после отбора не осталось значений
    print('Not Found') # печатаем Not Found

else: # иначе
    summ = 0 # заводим переменную для суммы
    for x in a: # проходимся по элементам массива
        summ += x # обновляем сумму
    print(round(summ / len(a), 2)) # выводим среднее с максимум двумя знаками после запятой

ответ дан 9 апр 2017 в 15:42

4

Ваш код просто не обрабатывает случай когда нет положительных чисел (когда следует Not Found вывести):

#!/usr/bin/env python3
import statistics

_ = int(input())  # ignore 
positive = (f for f in map(float, input().split()) if f > 0)
try:
    print("{:.2f}".format(statistics.mean(positive)))
except statistics.StatisticsError:
    print("Not Found")

ответ дан 10 апр 2017 в 12:24

jfs's user avatar

jfsjfs

51.6k11 золотых знаков106 серебряных знаков302 бронзовых знака

Понравилась статья? Поделить с друзьями:
  • Среди специфических ошибок при дисграфии можно выделить
  • Сплит баллу ошибка е6
  • Среди собравшихся превалировали представители молодежи стилистическая ошибка
  • Сплинтер селл блэклист не сохраняется как исправить
  • Среди собравшихся превалировали представители молодежи лексическая ошибка