Меню

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

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

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

Просмотров 22.3к. Обновлено 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

557k115 gold badges924 silver badges825 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 badges228 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 badges54 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.2k16 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

112 silver badges3 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,3941 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

557k115 gold badges924 silver badges825 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 badges228 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 badges54 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.2k16 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

112 silver badges3 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,3941 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

0 / 0 / 0

Регистрация: 26.04.2022

Сообщений: 24

1

Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим)

06.12.2022, 20:40. Показов 433. Ответов 2


Добрый вечер,нужен код к заданию:
Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и
наибольшим).
Заранее спасибо.

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь



0



Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

06.12.2022, 20:40

Ответы с готовыми решениями:

Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и наибольшим)
If13. Даны три числа. Найти среднее из них (то есть число, расположенное между наименьшим и…

Даны три числа. Найти среднее из них (т. е. число, расположенное между наименьшим и наибольшим)
Даны три числа. Найти среднее из них (т. е. число, расположенное между наименьшим и наибольшим)

Ввести три числа A, B, C. Вывести среднее из них (то есть число, расположенное между наименьшим и наибольшим)
Ввести три числа A, B, C. Вывести среднее из них (то есть число, расположенное между наименьшим и…

Даны 3 числа. Найти разность между наибольшим и наименьшим среди них
Даны 3 числа. Найти разность между наибольшим и наименьшим среди них.
Помогите пожалуйста!)

Даны четыре числа. Найти разность между наибольшим и наименьшим среди них
Даны четыре числа. Найти разность между наибольшим и наименьшим среди них. си

2

Mikail7D6

beginner

293 / 205 / 98

Регистрация: 02.08.2022

Сообщений: 333

06.12.2022, 20:49

2

Лучший ответ Сообщение было отмечено rwzx_ooo как решение

Решение

rwzx_ooo,

Python
1
print(sorted(map(int, input().split()))[1])

7 9 3 —> 7



1



0 / 0 / 0

Регистрация: 26.04.2022

Сообщений: 24

06.12.2022, 21:11

 [ТС]

3

Спасибо



0



Оглавление:

  • 1 Задача — Среди трех чисел найти среднее
    — программирование на Pascal, Си, Кумир, Basic-256, Python

    • 1.1 Pascal
    • 1.2 Язык Си
    • 1.3 Python
    • 1.4 Basic-256

Задача — Среди трех чисел найти среднее
— программирование на Pascal, Си, Кумир, Basic-256, Python

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

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

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

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

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

Если эти варианты также не вернули истину, то остается только один вариант — посередине лежит третье число.

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

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

Did you find apk for android? You can find new Free Android Games and apps.

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

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

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

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

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

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

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

как найти среднее число в Python

Учитывая 3 числа, мне нужно найти, какое число находится между двумя другими.

то есть, учитывая 3,5,2, мне нужно вернуть 3.

Я попытался реализовать это, пройдя через все три и используя условия if else, чтобы проверить, находится ли каждое из них между двумя другими, но это кажется наивным способом сделать это. Есть ли лучший способ?

На какой результат вы рассчитываете [1,1,2] ? — Tim Pietzcker

для [1,1,2], 1 следует взять как среднее число — damon

10 ответы

Поместите их в список, отсортируйте их, выберите средний.

ответ дан 02 апр.

Свен, это не только общий ответ, но и плохой вариант для трех чисел. Если такая подпрограмма появляется в задаче, связанной с тяжелыми вычислениями, создание списка из трех элементов и сортировка этого не подходит даже для Python. Представьте, что парень в следующий раз будет работать, например, на C ++, создает вектор из трех чисел и сортирует его . — Заур Насибов

@BasicWolf: Вы его тестировали? Разница не такая уж и большая — Никлас Б.

@Niklas B. Разница действительно небольшая. Меня беспокоят накладные расходы на решение для сортировки списков, и это звучит неправильно. Вы видели это: pyvideo.org/video/880/stop-writing-classes ? — Заур Насибов

@BasicWolf: Нет, но я проверю. Думаю, дело в том, что простота и надежность обычно являются наиболее важными аспектами вашего кода. — Никлас Б.

@BasicWolf: в большинстве случаев удобочитаемость важнее производительности, и вы не можете победить sorted((a, b, c))[1] в этом отношении. — Свен Марнах

Как найти среднее значение списка в 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 имеет встроенную функцию для вычисления среднего значения элементов данных, присутствующих в наборе данных или списке.

даны 3 числа, мне нужно найти какое число лежит между двумя другими.

ie, учитывая 3,5,2
Мне нужно вернуть 3.

Я попытался реализовать это, пройдя через все три и используя условия if else, чтобы проверить, находится ли каждый между двумя другими.Но это кажется наивным способом сделать это.Есть ли лучший способ?

9 ответов


поместите их в список, отсортируйте их, выберите средний.


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

самый быстрый очевидный способ для три цифры

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

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

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

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

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

для пользовательского решения вы можете посетить это страница.


Это O (n) реализация медианы с использованием кумулятивных распределений. Это быстрее, чем сортировка, потому что сортировка 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

проверьте это (предположим, список уже отсортирован):

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

вот моя попытка, используя более подходящие для Python версии

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

Если вы хотите избежать сортировки, вы можете сделать:

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

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии

А вот еще интересные материалы:

  • Яшка сломя голову остановился исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного исправьте ошибки
  • Ясность цели позволяет целеустремленно добиваться намеченного где ошибка
  • Среди терминов характеризующих понятие личность найдите ошибку
  • Спортивные общества выполняют большую роль ошибка