Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.75/88: Рейтинг темы: голосов - 88, средняя оценка - 4.75
3 / 3 / 1
Регистрация: 10.01.2018
Сообщений: 63

Найти: среднее, максимальное и минимальное число в последовательности

10.02.2019, 15:59. Показов 17283. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
"На вход программа получает набор чисел, заканчивающихся решеткой. Вам требуется найти: среднее, максимальное и минимальное число в последовательности. Так же нужно вывести cумму остатков от деления суммы троек на последнее число тройки (каждые 3 введеных числа образуют тройку).

Для понимания рассмотрим пример входных данных: 1 2 3 4 5 6 среднее: (1 + 2 + 3 + 4 + 5 + 6) / 6 = 3.5 максимум: 6 минимум: 1 сумма остатков троек: (1 + 2 + 3) mod 3 + (4 + 5 + 6) mod 6 = 6 mod 3 + 15 mod 6 = 0 + 3 = 3

Среднее выводить, округлив до трех знаков после запятой. Для этого нужно использовать функцию round(x, 3)

Того ваша программа должна вывести: 3.5 6 1 3

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

-13 65 -24 86 37 19 31 -52 -7 -3 72 71 61 -16 -71 -5 -41 -58 77 -27 -15 80 100 33 80 -86 -39 50 93 -57 68 9 56 -94 -62 73 42 57 70 49 37 22 3 57 4 78 -11 -10 -51 9 57 -7 -7 -22 83 -86 30 -6 50 -14 1 -27 -78 81 -41 13 -94 -16 -67 54 -79 59 -2 -52 65 -87 -63 -76 75 65 -85 59 5 10 -62
Дает в одну строку числа, которые еще и не удовлетворяют условию задачи, что мне вообще выводить в таком случае ???
Как можно усовершенствовать ввод, что бы можно было вводить как с новой строки так и через пробел, в плюсах и Си это на автомате делается)

Код:
Python
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
x = int(input())
arr = []
while x != '#':
    arr.append(int(x))
    x = input()
minEl = maxEl = arr[0]
midEl = sMod = 0
for i in range(1,len(arr)):
    if arr[i] < minEl:
        minEl = arr[i]
        
for i in range(1,len(arr)):
    if arr[i] > maxEl:
        maxEl = arr[i]
        
for i in range(len(arr)):
    midEl += arr[i]
midEl /= len(arr)
round(midEl,3)
for i in range(0,len(arr)//3):
    s = 0
    for j in range(3*i,3*(i+1)):
        s += arr[j]
    sMod += s % arr[3*(i+1) - 1]
print(midEl,maxEl,minEl,sMod)
Добавлено через 2 часа 32 минуты
Ну помогите плиз, я в гугле ниче не нашел что бы могло помочь
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.02.2019, 15:59
Ответы с готовыми решениями:

В последовательности случайных чисел найти минимальное и максимальное число в каждой последовательности(без массивов)
Очень нужна помощь! В последовательности случайных чисел найти минимальное и максимальное число в каждой последовательности(без...

Найти максимальное и минимальное число в последовательности
Вот сама задача найти MIN и MAX в массиве A N =14. Я написал Код: using System; using System.Collections.Generic; using...

Вывести сумму, максимальное число, минимальное число и среднее
Нужно ввести 5 чисел и вывести их сумму , максимальное число , минимальное число и среднее

16
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
10.02.2019, 16:10
Цитата Сообщение от TERMITE Посмотреть сообщение
Ну помогите плиз, я в гугле ниче не нашел что бы могло помочь
можете КОНКРЕТНО сказать - что не работает?
0
3 / 3 / 1
Регистрация: 10.01.2018
Сообщений: 63
10.02.2019, 17:04  [ТС]
IRIP, Если вводить каждый элемент массива в разные строки то все ОК
Пример
ВВОД:
1
2
3
4
5
Если вводить все в одну строчку через пробел то проблема конвертации
Знаю про input().split(), однако мне нужно что бы можно было и в одну строчку, и в разные, и я ХЗ как это сделать)

Добавлено через 43 секунды
можете КОНКРЕТНО сказать - что не работает?
Ввод)
0
 Аватар для IRIP
514 / 146 / 28
Регистрация: 18.04.2015
Сообщений: 1,904
Записей в блоге: 16
10.02.2019, 19:14
Цитата Сообщение от TERMITE Посмотреть сообщение
мне нужно что бы можно было и в одну строчку, и в разные
а зачем?
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
10.02.2019, 21:00
TERMITE, в задании у вас 85 чисел. это 28,(3) тройки. Что в таком случае?

Добавлено через 35 минут
В зависимости от формата ввода данных выбираете алгоритм
Python
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
try:
    s1 = s.split(' ')
    s2 = []
    sum1 = 0
    for i in s1:
        s2.append(int(i))
        sum1 += int(i)
    
    i = 0
    sum2 = 0
    if len(s2)%3 <= 1:
        while i <= len(s2)-3:
            sum2 += (s2[i] + s2[i+1] + s2[i+2])%s2[i+2]
            i += 3
    else:
        while i <= len(s2)-5:
            sum2 += (s2[i] + s2[i+1] + s2[i+2])%s2[i+2]
            i += 3
            # print(sum2)
        sum2 += (s2[-1] + s2[-2])%s2[-1]
    
    s2.sort()
    # print(s2)
    
    maximum = s2[-1]
    minimum = s2[0]
    avar = sum1/len(s2)
    
    print(maximum)
    print(minimum)
    print(avar)
    print(sum2)
 
except:
    minEl = maxEl = arr[0]
    midEl = sMod = 0
    for i in range(1,len(arr)):
        if arr[i] < minEl:
            minEl = arr[i]
            
    for i in range(1,len(arr)):
        if arr[i] > maxEl:
            maxEl = arr[i]
            
    for i in range(len(arr)):
        midEl += arr[i]
    midEl /= len(arr)
    round(midEl,3)
    for i in range(0,len(arr)//3):
        s = 0
        for j in range(3*i,3*(i+1)):
            s += arr[j]
        sMod += s % arr[3*(i+1) - 1]
    print(midEl,maxEl,minEl,sMod)
0
3 / 3 / 1
Регистрация: 10.01.2018
Сообщений: 63
10.02.2019, 21:58  [ТС]
m0nte-cr1st0, Я вроде составил рабочий алгоритм, проблема в том что проверяющая система вводит данные и так и так, и нужно приспособить код к обоим методам ввода

Добавлено через 26 секунд
IRIP, JUDGE хочет так
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 01:03
Вам так важно, что скажет проверяющая программа? Вы посредством неё сдаете какой то зачет в учебном заведении?.
0
3 / 3 / 1
Регистрация: 10.01.2018
Сообщений: 63
11.02.2019, 01:22  [ТС]
Viktorrus, Нет) проверяющая система при универе, но я в нем не учусь
Просто у некоторых (есть таблица пользователей) получилось с первого раза, и для меня это вообще загадка
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 02:05
Проверяющие системы не обладают интеллектом и часто бывают тупыми. Нужно пользоваться не проверяющими системами а хорошим отладчиком, который не только проверит правильность кода, но и сообщит где ошибка.

Добавлено через 11 минут
Просто кто то угадал что нужно системе, а Вы не угадали, но в этом не Ваша вина, а не совершенство тестирующей системы.
0
 Аватар для m0nte-cr1st0
1043 / 578 / 242
Регистрация: 15.01.2019
Сообщений: 2,178
Записей в блоге: 1
11.02.2019, 05:31
TERMITE, мне интересно, как вы это видите? Тут, очевидно, в зависимости от вида аходных данных нужно выбирать тот или иной адгоритм
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
11.02.2019, 10:31
Вот функция, которая читает из входного потока n целых. Поток может быть любым разумным. Только числа нельзя разрывать:

Python
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
26
27
def getInt(n):
    res=[]
    c=0
    while(True):
        tmp=input()
        tmp=tmp.strip()
        acc=""
        l=len(tmp)
        for i in range(l):
            if (tmp[i]==' ') | (tmp[i]==','):
                if len(acc)>0:
                    res+=[int(acc)]
                    c+=1
                    acc=""
            else:
                if (tmp[i]>='0') & (tmp[i]<='9'):
                    acc+=tmp[i]
        if len(acc)>0:
            res+=[int(acc)]
            c+=1
            acc=""
        if (c>n):
            break
    return res[:n]
    
x=getInt(10)
print(str(x))
https://ideone.com/xPk4mw

Вот пример потока:

Code
1
2
3
4
1
2,
3,4,5,6,,
7,8,9 10 11 12
Вот вывод:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
1
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 16:25
Здорово, чувствуется что Catstail, профессионал. Оказывается здесь нужно было абстрагироваться от узкого понимания ввода, а рассматривать его как обобщенный поток ввода.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
11.02.2019, 17:18
Viktorrus, перехвалили Вы меня. Я упустил, что числа могут быть отрицательными. Нужно доработать...
0
1732 / 970 / 199
Регистрация: 22.02.2018
Сообщений: 2,693
Записей в блоге: 6
11.02.2019, 18:35
Catstail, Не перехвалил. Я ведь оцениваю не только по этой задаче, а и по другим, где Вы так же давали профессиональный ответ. Но вообще, если быть объективным, то кроме Вас я заметил еще одного профессионала на этом форуме. Это Garry Galler. Меня поражают его обширные знания в различных областях IT. В общем это Вы и он, кто у меня вызывают искреннее уважение на этом форуме.
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38169 / 21104 / 4307
Регистрация: 12.02.2012
Сообщений: 34,693
Записей в блоге: 14
11.02.2019, 19:10
Вот код, который может читать отрицательные числа:

Python
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
26
27
28
29
30
31
32
33
34
35
36
37
38
class BadSymbolException(Exception):
    pass
    
def getInt(n):
    res=[]
    c=0
    while(True):
        tmp=input()
        tmp=tmp.strip()
        acc=""
        l=len(tmp)
        for i in range(l):
            if (tmp[i]==' ') | (tmp[i]==','):
                if len(acc)>0:
                    res+=[int(acc)]
                    c+=1
                    acc=""
            else:
                if (tmp[i]=='-'):
                    if acc=="":
                        acc="-"
                    else:
                        raise BadSymbolException("Минус внутри числа!")
                if (tmp[i]>='0') & (tmp[i]<='9'):
                    acc+=tmp[i]
        if len(acc)>0:
            res+=[int(acc)]
            c+=1
            acc=""
        if (c>n):
            break
    return res[:n]
    
try:     
    x=getInt(10)
    print(str(x))
except BadSymbolException as e:
    print(e)
https://ideone.com/rNZKgO
1
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 3
10.04.2021, 14:35
Python
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
import math as m
import copy
 
num = 0
n = -1
k = 0
mac = []*n
num_s = 0
summ = 0
sum_all = 0
 
while num != '#':
    num = input()
    if num != '#':
        mac.append(int(num))
    n += 1
 
mac_copy = mac.copy()
k = m.trunc(n / 3)
 
for i in range(n):
    num_s += mac[i]/n
 
num_max = mac_copy[0]
for i in range(1, n):
    if (mac_copy[i] > num_max):
        num_max = mac_copy[i]
 
num_min = mac_copy[0]
for i in range(1, n):
    if (mac_copy[i] < num_min):
        num_min = mac_copy[i]
 
j = 0
if (k >= 1):
    for i in range(k):
        p = mac[2]
        while j < 3:
            i = 0
            summ += mac[i]
            mac.remove(mac[i])
            j += 1
        sum_all += (summ) % p
        summ = 0
        j = 0
print(round(num_s, 3), num_max, num_min, sum_all)
0
0 / 0 / 0
Регистрация: 22.09.2019
Сообщений: 3
14.04.2021, 11:42
Python
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
import math as m
import copy
 
k = 0
n = 0
num = 0
mac = []*n
num_m= 0
summ = 0
sum_all =0
 
mac = [int(i) for i in input().split()]
if len(mac) <= 1:
    while num != '#':
        num = input()
        if num != '#':
            mac.append(int(num))
            n += 1
 
mac_copy = mac.copy()
n = len(mac_copy)
k = m.trunc(n / 3)
num_max = num_min = mac_copy[0]
 
for i in range(n):
    num_m += mac[i]/n
num_m = round(num_m, 3)
 
for i in range(1, n):
    if (mac_copy[i] > num_max):
        num_max = mac_copy[i]
 
for i in range(1, n):        
    if (mac_copy[i] < num_min):
        num_min = mac_copy[i]
        
j = 0
if (k >= 1):    
    for i in range(k):
        p = mac[2]
        while j < 3:
            i = 0
            summ += mac[i]
            mac.remove(mac[i])
            j += 1
        sum_all += (summ)%p           
        summ = 0
        j = 0       
print(num_m, num_max, num_min, sum_all)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
14.04.2021, 11:42
Помогаю со студенческими работами здесь

Массив: Для чётных элементов узнать их суму, среднее арифметическое, максимальное число, минимальное число...
Есть 10 рандомных чисел. знаю которые из них чётные а которые нет. нужно отдельно для чётных узнать их суму, среднее арифметическое,...

Определить минимальное и максимальное число в последовательности
Даны две задачи. 1) Дана последовательность (любая) чисел. Определить минимальное и максимальное число в этой последовательности. 2)...

Определить максимальное и минимальное число последовательности
1. Написать программу, которая определяет максимальное и минимальное число из введенной с клавиатуры последовательности положительных чисел...

Дана последовательность из n целых чисел. Определить максимальное четное число и минимальное нечетное число в этой последовательности
Ув. форумчане, будьте добры, помогите решить следующую задачу... Дана последовательность из n целых чисел. Определить максимальное...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru