Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите с задачкой на пайтоне!

pro pro proo Ученик (71), открыт 1 неделю назад
Робот записывал оценки учеников, но иногда глючил и писал странные (даже не всегда целые) числа. Учитель решил, что оставит только те записи, которые могут быть оценками: целые числа от 2 до 5. Если это число действительное, то он перепишет его в правильном виде (например, 3.0 — это правильная оценка, но учитель запишет 3).
Дана последовательность чисел, а в конце строка "стоп". Выведи массив из оценок, которые оставил учитель.
Можно считать, что если дробная часть (после точки) равна нулю, то этот ноль только один. То есть число 4 не может быть записано как 4.00.

Ввод Вывод
2
3.5
5.0
7
29
357
42
4
333
3.0
стоп
Дополнен 1 неделю назад
Вывод
[2, 3, 5, 4, 3]
2 ответа
Исмагил Рустемович Профи (663) 1 неделю назад
а вывод ?
pro pro prooУченик (71) 1 неделю назад
дополнил
Исмагил Рустемович Профи (663) grades = [] while True: num = input() if num == "стоп": break try: num = float(num) if num.is _integer() and 2 <= num <= 5: grades.append(int(num)) elif num.is _integer() and num == int(num) and num > 5: continue else: grades.append(int(num)) except ValueError: continue print(grades)
Исмагил РустемовичПрофи (663) 1 неделю назад
попробуй
Исмагил РустемовичПрофи (663) 1 неделю назад
отступы сам сделай майл нормально не дает поставить
pro pro prooУченик (71) 1 неделю назад
синтаксическая ошбка
Исмагил Рустемович Профи (663) pro pro proo, отступы сделай
pro pro prooУченик (71) 1 неделю назад
я сделал
Андрей Высший разум (430691) 1 неделю назад
 import re 
t = filter(lambda s: re.match('^[2-5](\.0)?$', s), iter(input, 'стоп'))
print(*map(lambda s: s.replace('.0', ''), t), sep='\n')
 import re
print(*[s.replace('.0', '') for s in iter(input, 'стоп') if re.match('^[2-5](\.0)?$', s)], sep='\n')
pro pro prooУченик (71) 1 неделю назад
вывод не тот
Андрей Высший разум (430691) pro pro proo, Когда я писал ответ, ты ещё не соизволил указать формат вывода. Так что ты сам в этом виноват. Во втором варианте убери * и , sep='\n' - получишь тот вывод.
pro pro prooУченик (71) 1 неделю назад
[2, 3, 5, 4, 3] надо так а выводит ['2', '3', '5', '4', '3']
Андрей Высший разум (430691) pro pro proo,
 import re 
print([int(s.replace('.0', '')) for s in iter(input, 'стоп') if re.match('^[2-5](\.0)?$', s)]) 
Похожие вопросы