Новая Школа - онлайн-школа подготовки к ЕГЭ
Программирование · 9 класс Задача №2734058
А
Аноним
04 февраля 2025 18:04 · публичный вопрос
А
Аноним

Задача 7 Робот записывал оценки учеников, но иногда глючил и писал странные (даже не всегда целые) числа. Учитель решил, что оставит только те записи, которые могут быть оценками:…

Запрос пользователя

Задача 7 Робот записывал оценки учеников, но иногда глючил и писал странные (даже не всегда целые) числа. Учитель решил, что оставит только те записи, которые могут быть оценками: целые числа от 2 до 5. Если это число действительное, то он перепишет его в правильном виде (например, 3.0 — это правильная оценка, но учитель запишет 3). Дана последовательность чисел, а в конце строка "стоп". Выведи массив из оценок, которые оставил учитель. Можно считать, что если дробная часть (после точки) равна нулю, то этот ноль только один. То есть число 4 не может быть записано как 4.00. Ввод Вывод 2 3.5 5.0 7 29 357 42 4 333 3.0 стоп [2, 5, 4, 3]

Ответ нейросети
04 февраля 2025 18:04
grades = []
while True:
    num = input()
    if num == "стоп":
        break
    try:
        float_num = float(num)
        if float_num.is_integer() and 2 <= float_num <= 5:
            grades.append(int(float_num))
    except ValueError:
        continue

print(grades)

Обсуждение

2 сообщения
А
Аноним

решить через for i in range

Нейросеть04 февраля 2025 18:05

Конечно! Вот решение с использованием цикла for и range. Мы можем использовать input() для считывания значений, а затем обработать каждое значение, пока не встретим "стоп". Однако range сам по себе не может быть напрямую использован для обработки произвольного числа вводов, поэтому в этом случае просто повторим input() в диапазоне заранее заданного числа повторений и добавим обработку для выхода при вводе "стоп".

Давайте напишем код, который будет максимально соответствовать вашему запросу:

grades = []

# Сначала уточним, что вы не знаете заранее количество вводов,
# поэтому используем около 100 (это можно изменить при необходимости).
for i in range(100):  
    num = input()
    if num == "стоп":
        break
    try:
        float_num = float(num)
        if float_num.is_integer() and 2 <= float_num <= 5:
            grades.append(int(float_num))
    except ValueError:
        continue

print(grades)

В этом коде цикл будет работать до 100 итераций, пока не будет введено слово "стоп". Если вы хотите ограничить количество вводов чисел, просто измените число в range().