ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1074. Очень короткая задача

WA2 with re
Послано Alexandr Vasilyev 7 июл 2016 16:25
import re
fl = re.compile('[+-]?[1234567890]*\.[1234567890]*([Ee][+-]?[1234567890]+)?')
lf = re.compile('[+-]?[1234567890]+([Ee][+-]?[1234567890]+)?')
nums = []
while True:
    first = input()
    if first == '#':
        break
    nums.append((first, int(input())))
for num in nums:
    num0 = num[0]
    if not (re.fullmatch(fl, num0) or re.fullmatch(lf, num0)):
        print('Not a floating point number')
        continue
    try:
        e_pos = num0.index('e')
        exp = int(num0[e_pos + 1:])
        num0 = num0[:e_pos]
    except:
        try:
            e_pos = num0.index('E')
            exp = int(num0[e_pos + 1:])
            num0 = num0[:e_pos]
        except:
            exp = 0
    pm = num0[0]
    if pm in ['+', '-']:
        num0 = num0[1:]
    else:
        pm = '+'
    if pm == '+':
        pm = ''
    if exp > 0:
        num0 += '0' * exp
    elif exp < 0:
        num0 = '0' * (-exp) + num0
    try:
        dot_pos = num0.index('.')
    except:
        dot_pos = len(num)
        num0 += '.'
    new_dot_pos = dot_pos + exp
    num0 = num0[:dot_pos] + num0[dot_pos + 1:]
    num0 = num0[:new_dot_pos] + '.' + num0[new_dot_pos:]
    while num0.startswith('0'):
        num0 = num0[1:]
    if num0.startswith('.'):
        num0 = '0' + num0
    num0 += '0' * num[1]
    num0 = num0[:num0.index('.') + num[1] + 1]
    if num0.endswith('.'):
        num0 = num0[:-1]
    print(num0)