Форум программистов, компьютерный форум, киберфорум
Python: Решение задач
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.62/21: Рейтинг темы: голосов - 21, средняя оценка - 4.62
0 / 0 / 0
Регистрация: 20.07.2022
Сообщений: 14

Задача 3. Клетки (С авто-тестом)

21.07.2022, 12:15. Показов 4580. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие задачи: В научной лаборатории выводят тестируют новые виды клеток. Есть список из N этих клеток, где элемент списка - это показатель эффективности, а индекс списка - это ранг клетки. Ученые отбирают клетки по следующему принципу: если эффективность клетки меньше её ранга, то это клетка не подходит

Напишите программу, которая выводит на экран те элементы списка, значения которых меньше их индекса

Пример работы программы:
Кол-во клеток: 5
Эффективность 1 клетки: 3
Эффективность 2 клетки: 0
Эффективность 3 клетки: 6
Эффективность 4 клетки: 2
Эффективность 5 клетки: 10

Неподходящие значения: 0 2
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
def get_input_parameters():
    a_cells = int(input('Количество клеток: '))
 
    return a_cells
 
def display_result(cells):
    print(f'Неподходящие значения: {cells}')
 
 
def select_cells(cells):
   res_cells = []
 
   for i in range(cells):
       cell = int(input(f'Эффективность {i + 1} клетки: '))
       if cell < i + 1:
           res_cells.append(cell)
 
   return res_cells
 
if __name__ == '__main__':
    # Это условие необходимо, чтобы в рамках автотестов не произошёл
    # вызов функций get_input_parameters и display_result
    cells = get_input_parameters()  # получаем параметры
    result_cells = select_cells(cells)  # отбираем клетки
    display_result(result_cells)  # выводим результат
Решил несколькими способами, остановился на этом.Так как я только учусь, сделал код максимально кароче.К сути:
Код работает, но опять же автотест выдает ошибку:
Python
1
2
3
4
5
6
7
Error
Traceback (most recent call last):
 line 12, in test_select_cells
    res_cells = select_cells(cells)
line 13, in select_cells
    for i in range(cells):
TypeError: 'list' object cannot be interpreted as an integer
Код самого теста:
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
import unittest
 
from task_03_cells.main import select_cells
 
 
class Test03SelectCells(unittest.TestCase):
    def test_select_cells(self):
        """
        Проверяем обычный кейс. При параметрах [5, 3, 0, 6, 2, 10, 4]  должны получить [0 2, 4]
        """
        cells = [3, 0, 6, 2, 10, 4]
        res_cells = select_cells(cells)
        self.assertEqual(res_cells, [0, 2, 4])
 
    def test_select_cells_no_result(self):
        """
        Проверяем обычный кейс. При параметрах [1, 2, 3]  должны получить []
        """
        cells = [1, 2, 3]
        res_cells = select_cells(cells)
        self.assertEqual(res_cells, [])
 
 
if __name__ == '__main__':
    unittest.main()
Как я понимаю ошибку:Мой обьект(список) не может быть интерпретирован как целочисленное число. Тоесть мой ответ должен быть списком..так как он сравнивает мой ответ со своим ответом(в виде списка).
Значит ошибка кроется в этом цикле:
Python
1
2
3
4
for i in range(cells):
       cell = int(input(f'Эффективность {i + 1} клетки: '))
       if cell < i + 1:
           res_cells.append(cell)
С первой функции в cells приходит int.Но получается тест хочет от меня, чтоб в цикле аргумент был списком?Если да, опять же пробовал менять тип аргумента в список.Все равно ошибка. Верно ли я понял ошибку?Помогите плиз разобраться.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.07.2022, 12:15
Ответы с готовыми решениями:

Описать базовый класс автомобиль и от него наследуются классы: грузовые авто, уборочные авто, спортивные авто
Всем привет!:) хочу спросить кто нибудь писал программы с наследованием на С++? Интересны задачи типа : &quot;Описать базовый класс...

Задача 3. Клетки
Задача 3. Клетки Что нужно сделать В научной лаборатории выводят и тестируют новые виды клеток. Есть список из N этих клеток,...

Задача A. Попугаи и клетки
Задача A. Попугаи и клетки Имя входного файла: стандартный ввод Имя выходного файла: стандартный вывод Ограничение по времени: 1...

8
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.07.2022, 12:47
for i in range(len(cells)):

Добавлено через 6 минут
Python
1
2
3
4
5
def select_cells(cells):
    return [e for i, e in enumerate(cells) if e <= i]
 
def select_cells(cells):
    return [cells[i] for i in range(len(cells)) if cells[i] <= i]
0
0 / 0 / 0
Регистрация: 20.07.2022
Сообщений: 14
21.07.2022, 13:20  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
for i in range(len(cells)):
Направление понял.Благодарю. Автотест прошел конечно Ваш код. Но сам код перестал работать.И сам бы я так не решил , так как не дошел еще до этого уровня. А можно пожалуйста более в простом варианте?)Синтаксис через len понятен.Не понял что
Python
1
cells[i]
делает. Хотел перевести на свой лад, более простой)
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.07.2022, 13:26
Цитата Сообщение от Capitan_Orgasma Посмотреть сообщение
Синтаксис через len понятен. Не понял что cells[i] делает.
Получается, что непонятен. Вот то же самое, развернуто
Python
1
2
3
4
5
6
def select_cells(cells):
    result = []
    for i in range(len(cells)): # перебираем все индексы элементов в cells
        if cells[i] <= i:  # если элемент под индексом i меньше самого индекса i...
            result.append(cells[i]) #... то добавляем его в список
    return result  # возвращаем
0
0 / 0 / 0
Регистрация: 20.07.2022
Сообщений: 14
21.07.2022, 13:33  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Получается, что непонятен. Вот то же самое, развернуто
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Получается, что непонятен. Вот то же самое, развернуто
Дак в том и дело, я написал в простом варианте. Тест проходит, но сам код не работает и пишет ошибку:
Python
1
2
3
4
5
6
7
Количество клеток: 5
Traceback (most recent call last):
  line 19, in <module>
    result_cells = select_cells(cells) 
    line 11, in select_cells
    for i in range(len(cells)):
TypeError: object of type 'int' has no len()
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.07.2022, 13:53
Capitan_Orgasma, а ничего, что из функции get_input_parameters() должен возвращаться готовый список, а не одно количество элементов?
Дописывай

Добавлено через 4 минуты
Тьфу ты.

Добавлено через 2 минуты
Куда ты это запихнул?

Добавлено через 4 минуты
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
def get_input_parameters():
    res_cells = []
    for i in range(int(input('Количество клеток: '))):
        cell = int(input(f'Эффективность {i + 1} клетки: '))
        res_cells.append(cell)
    return res_cells
 
 
def display_result(cells):
    print(f'Неподходящие значения: ', end='')
    print(*cells)
 
 
def select_cells(cells):
    result = []
    for i in range(len(cells)):
        if cells[i] <= i:
            result.append(cells[i])
    return result
 
 
if __name__ == '__main__':
    cells = get_input_parameters()
    result_cells = select_cells(cells)
    display_result(result_cells)
0
0 / 0 / 0
Регистрация: 20.07.2022
Сообщений: 14
21.07.2022, 13:54  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
а ничего, что из функции get_input_parameters() должен возвращаться готовый список, а не одно количество элементов?
Дописывай
Добавлено через 4 минуты
Тьфу ты.
Добавлено через 2 минуты
Куда ты это запихнул?
Пока никуда. Так как у меня выходит что инпут на эффективность клеток нужно пристроить.Но в первую функцию ее нельзя пихать, так как в pass пишут, что нельзя логику расчетов производить. Сейчас буду думать как цикл дополнить.
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
21.07.2022, 13:58
Лучший ответ Сообщение было отмечено Capitan_Orgasma как решение

Решение

Цитата Сообщение от Capitan_Orgasma Посмотреть сообщение
что нельзя логику расчетов производить
Так там никакой логики расчетов и нет. Только ввод

Добавлено через 23 секунды
В моем коде всмысле
0
0 / 0 / 0
Регистрация: 20.07.2022
Сообщений: 14
21.07.2022, 14:01  [ТС]
Цитата Сообщение от iSmokeJC Посмотреть сообщение
Так там никакой логики расчетов и нет. Только ввод
Тоесть цикл не является "расчетом"?. Я не правильно понял условие выполнения(
Спасибо большое за пояснение!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.07.2022, 14:01
Помогаю со студенческими работами здесь

Задача: обойти клетки доски
Дана доска (N x N) с &quot;выбитыми&quot; клетками, а также конь на позиции X, Y. Вывести маршрут, если конь может обойти всю доску, заходя в каждую...

Задача. Из листа клетчатой бумаги удалили некоторые клетки
Из листа клетчатой бумаги размером M*K клеток удалили некоторые клетки. Подсчитать, на сколько кусков распадется оставшаяся часть листа. ...

Олимпиадная задача. Занумеровать клетки исходного квадрата по правилу
Олимпиадная задача Квадрат разбит на 4k одинаковых квадратных клеток. Квадрат перегибается поочередно относительно вертикальной...

Задача. Из листа клетчатой бумаги удалили некоторые клетки
Из листа клетчатой бумаги размером M*K клеток удалили некоторые клетки. Подсчитать, на сколько кусков распадется оставшаяся часть листа. ...

Задача про белые и чёрные клетки на шахматной доске
Условие: На шахматной доске отмечены 2 клетки. Если они белого цвета (обе), то выводим &quot;True&quot;, а если чёрного, выводим...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru