Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.06.2018, 18:42   #1
artem1234567
Новичок
Джуниор
 
Регистрация: 10.06.2018
Сообщений: 1
По умолчанию Программа на python

Найти мин. элемент в массиве, который делится на 4, а затем все элементы, делящиеся на 4, заменить на этот элемент. Что не так?
Код:
a = []
n = 10
for i in range(0, n):
    a.append(int(input()))
j = min(k for k in a if k%4 == 0)
for i in range(n):
    if a[i]%4 == 0:
        a[i] = j
    print(a[i])

P.S.
Код надо оформлять тегом [CODE]

Последний раз редактировалось Человек_Борща; 10.06.2018 в 19:24. Причина: Код не оформлен.
artem1234567 вне форума Ответить с цитированием
Старый 11.06.2018, 08:47   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вам надо запомнить в массив b позиции всех элементов подпадающих под условие (делятся на 4).
Потом снова перебрать массив a с числами, и заменить a[b[i]] на a[b[0]]
Человек_Борща вне форума Ответить с цитированием
Старый 12.06.2018, 19:22   #3
ViktorR
Старожил
 
Регистрация: 23.10.2010
Сообщений: 2,306
По умолчанию

У меня получилось так:
Код:
import random
a = []
n = 10
for i in range(0, n):
    a.append(random.randint(0,100))
    print(a[i])
min = a[0]
b = []
for i in range(1, n):
    if (a[i]%4 == 0):
        b.append(i)
        if a[i] < min:
            min = a[i]
for i in b:
    print('b-',i)  # test
    a[i] = min
    print(a[i])
PS: Мне не очень понятно, когда десяток чисел надо вводить руками ...
Как-то так, ...
ViktorR вне форума Ответить с цитированием
Старый 12.06.2018, 23:37   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Цитата:
PS: Мне не очень понятно, когда десяток чисел надо вводить руками ...
Зачем?

Код:
import sys

def process(str):
  print('Вы ввели: '+str);
  a = [int(n) for n in str.split(' ')]; 
  print(a); # Массив чисел здесь
  pass

if __name__ == "__main__":
  str  = input('Введите массив чисел, числа разделены пробелом: ');
  process(str);
Задачу можно решить 2-я строчками, а то и вовсе одной:
Код:
  
 j = min([n for n in a if n%4 == 0]);
 a = [j if n%4 == 0 else n for n in a];
Массив а преобразуется до итогового состояния. Если не понимаете, не копируйте Препод по любому спросит, как это работает))

Последний раз редактировалось Человек_Борща; 13.06.2018 в 00:06.
Человек_Борща вне форума Ответить с цитированием
Старый 13.06.2018, 02:36   #5
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от artem1234567 Посмотреть сообщение
Что не так?
А что-то не так?

Единственное, что точно не так - если в массиве не окажется ни одного числа, делящегося на 4, код выбросит исключение. Надо бы делать через промежуточный список, примерно так:
Код:
temp = [k for k in a if k%4 == 0]
if temp:
    j = min(temp)
А если заниматься улучшательством, то я бы и ввод массива переписал через генератор:
n = 10
a = [int(input()) for _ in range(n)]


Цитата:
Сообщение от ViktorR Посмотреть сообщение
Мне не очень понятно, когда десяток чисел надо вводить руками ...
Ну может по условию так нужно. Всякие системы автоматической проверки такое практикуют
Black Fregat вне форума Ответить с цитированием
Старый 13.06.2018, 02:41   #6
Black Fregat
Программист
Участник клуба
 
Аватар для Black Fregat
 
Регистрация: 23.06.2009
Сообщений: 1,772
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
Задачу можно решить 2-я строчками, а то и вовсе одной
Красиво.

Но Ваш код тоже вылетит, если не будет ни одного элемента, кратного 4.
Надо или исключение ловить, или проверять список на пустоту.
Black Fregat вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Документации, учебники, уроки и полезные материалы по Python, PyQt, PySide pompiduskus Python 4 22.07.2022 10:16
Программа на Python ДмитрийЗинька Помощь студентам 1 06.10.2017 07:50
[Python] Написанная программа неверно считает. SimON1 Помощь студентам 16 07.09.2017 23:27
программа считающая пробелы python goshek Python 1 12.02.2014 06:29
Python или C++ и OpenCV, программа eiscalle Фриланс 1 05.03.2013 04:51