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

Помощь с решением задачи на Булевы переменные, прерывания и продолжения циклов

06.11.2023, 00:45. Показов 5455. Ответов 6

Студворк — интернет-сервис помощи студентам
Текст задачи:
Астероиды – такие опасные штуки, которые могут внезапно изменить направление своего движения (потому что легкие и сильно подвержены гравитационному влиянию окружающих тел) и ударить в Землю. Поэтому за ними нужно внимательно следить и в случае опасности нейтрализовать.
Измерения расстояния до астероида происходят через равные промежутки времени. Нужно определить количество измерений, при которых направление движения не менялось, то есть расстояния последовательно уменьшались или последовательно увеличивались. Если расстояние не изменилось, то его не считаем, возможно, это просто помехи.
В момент, когда происходит смена тенденции увеличения на уменьшение или наоборот, нужно вывести количество измерений в последней серии.
Однако, если расстояние стало меньше критического (35 тыс км), измерения нужно прекратить и вывести сигнал тревоги: ALARM, результат последнего измерения уже выводить не нужно, нужно спасать Землю!

Напишите программу, которая будет изучать движение астероида и заодно предупреждать, если что-то пошло не так.

Формат ввода:
Вводятся целые неотрицательные числа – расстояния в тысячах километров, – пока не будет введено любое отрицательное число.

Формат вывода
Вывести количество измерений во всех сериях последовательного уменьшения или увеличения расстояний, при этом последовательные одинаковые значения считать один раз. Если значение меньше 35, вместо последнего результата измерений нужно вывести ALARM и прекратить считывать данные.

Пример 1
Ввод
37
47
144
144
176
143
71
46
39
116
-1
Вывод
4
5
2

Пример 2
Ввод
93
98
122
122
122
122
100
53
31
29
45
-20
Вывод
3
ALARM

Пример 3
Ввод
32
38
-5
Вывод
ALARM
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
06.11.2023, 00:45
Ответы с готовыми решениями:

Нужна помощь с решением задачи на ввод / вывод
Здравствуйте. Есть задание, не могу понять в чем ошибка моего кода, помогите разобраться пожалуйста. Задание: You have a box of...

Тема : Программирование циклов с заданным условием продолжения работы
Напишите программу, которая в последовательности натуральных чисел вычисляет сумму всех однозначных чисел, кратных 3. Программа получает...

Булевы переменные выводятся по русски
Проблема Response.Write LCase(True) дает истина (по русски!) Причем внутри кода все булевы переменные работают...

6
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.11.2023, 04:35
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
diff_st = []
res = []
prev = None
while True:
    val = int(input('->'))
    if val < 0:
        if diff_st:
            res.append(len(diff_st) + 1)
        break
    if val < 35:
        res.append('ALARM')
        break
    if prev != None:
        diff = val - prev
        if diff == 0:
            continue
        if diff_st and (diff * diff_st[-1] < 0):
            res.append(len(diff_st)+1)
            diff_st.clear()
        diff_st.append(diff)
    prev = val
print(*res, sep='\n')
2
0 / 0 / 0
Регистрация: 06.11.2023
Сообщений: 14
06.11.2023, 15:38  [ТС]
Не принимается как правильный ответ.

Вердикт
ошибка компиляции или оформления кода. Подробнее
Лог компиляции
stdout:
/bin/sh ./build.sh 1>&2


stderr:
solution.py:13:13: E711 comparison to None should be 'if cond is not None:'
solution.py:18:36: E226 missing whitespace around arithmetic operator
Код не соответствует стандарту PEP8
или в нем есть синтаксические ошибки
make: *** [Makefile:2: build] Error 1

Добавлено через 14 минут
Вот так засчитывается:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff_st, res, prev = [], [], None
while True:
    n = int(input())
    if n < 0:
        if diff_st:
            res.append(len(diff_st) + 1)
        break
    if n < 35:
        res.append('ALARM')
        break
    if prev is not None:
        diff = n - prev
        if diff == 0:
            continue
        if diff_st and (diff * diff_st[-1] < 0):
            res.append(len(diff_st) + 1)
            diff_st.clear()
        diff_st.append(diff)
    prev = n
print(*res, sep='\n')
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.11.2023, 15:48
Цитата Сообщение от Marieend Посмотреть сообщение
ошибка компиляции или оформления кода
Чушь какая-то! Это что за система вам такое выдала?
0
0 / 0 / 0
Регистрация: 06.11.2023
Сообщений: 14
06.11.2023, 16:31  [ТС]
Да нет, она всё правильно выдала, что код не соответствовал стандарту. У вас в 13 строке if prev != None: вместо if prev is not None: . Ещё в 18 строке плюс не отделён пробелами.
0
06.11.2023, 17:32

Не по теме:

В топку системы проверки, которые ориентируются на некие стандарты.

В топку пользователей, которые сами не в состоянии переделать под необходимые стандарты.

0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,707
06.11.2023, 19:47
Цитата Сообщение от Marieend Посмотреть сообщение
код не соответствовал стандарту
Ну, pep 8 это всего лишь рекомендации.
Цитата Сообщение от Marieend Посмотреть сообщение
if prev != None: вместо if prev is not None
Да, почитал, год назад было сообщение об устаревании этого выражения. Кстати, мой пайчарм даже не подчеркивает.
Ну а насчет пробелов, мне кажется, они уже сильно заморачиваются. Иногда так удобно, иногда эдак.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2023, 19:47
Помогаю со студенческими работами здесь

Запуск задачи по таймеру и задачи продолжения
Есть код примера использования Task.ContinueWith static void Main(string args) { int array_of_random_numbers=...

Опустить знаки отрицания непосредственно на предикаты или булевы переменные
Опустить знаки отрицания непосредственно на предикаты или булевы переменные.

Реализовать программу, моделирующую работу логического элемента «2-И-НЕ».Входные булевы переменные генерируются случайно
У меня не получается сгенерировать в массиве множество нулей и единиц. Т.е. если в массиве 5 элементов, то при его заполнении получается...

Помощь с решением функции
Сделал задачку в QBasic, теперь надо в Паскале. Сама задача &quot;Z = 2*(B(I)+2/X), где B(I) – элемент массива B(20); X – параметр, меняющийся...

Нужна помощь с решением залач на VB
Привет всем. Можно мeня помочь эти задачи на языке Visual Basic. спасибо. 1. Составьте процедуру, изменяющую одномерный массив...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути
Programma_Boinc 01.01.2026
Учёным и волонтёрам проекта «Einstein@home» удалось обнаружить четыре гамма-лучевых пульсара в джете Млечного Пути Сочетание глобально распределённой вычислительной мощности и инновационных. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru