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

Разделение выражения на лексемы

05.02.2021, 18:45. Показов 999. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задано числовое выражение. Необходимо разбить его на лексемы и вывести каждую на новой строке. Гарантируется, что исходное выражение корректно. В выражении могут встречаться знаки сложения, вычитания, умножения и скобки, а также пробелы (пробелы не могут встречаться внутри чисел). Приоритет операций стандартный. Все числа в выражении целые и принадлежат диапазону LongInt (int в Си).

Входные данные
В первой строке вводится выражение. Его длина не превосходит 100 знаков. После выражения идет переход на новую строчку.

Выходные данные
Выведите все встречающиеся лексемы выражения по порядку и ровно по одной на каждой строке. Никаких пробелов не должно быть выведено.

Примеры
входные данные
1+(2*2 - 3)
выходные данные
1
+
(
2
*
2
-
3
)
Python
1
2
3
4
5
6
7
input = open('input.txt', 'r')
c = input.read(1)
while len(c) > 0 and c != '\n':
    if c != ' ':
        print(c)
    c = input.read(1)
input.close()
Скорее всего в тестах, которые код не проходит, числа 2 и более значные, а код у меня разделяет их. Подскажите, пожалуйста как это исправить?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
05.02.2021, 18:45
Ответы с готовыми решениями:

Разделение выражения на лексемы
Задано числовое выражение. Необходимо разбить его на лексемы и вывести каждую на новой строке. Гарантируется, что исходное выражение...

Разделение на лексемы
Добрый день. Знаю, что такая тема была и я ее просмотрела, но туда писать не стала, т.к ответа не дождусь, поэтому дубляж. Задача: из...

Разделение строки, регулярные выражения
Как с помощью регулярных выражений в питон можно разделить строку на части? Например имеется строка а =...

4
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38196 / 21129 / 4309
Регистрация: 12.02.2012
Сообщений: 34,737
Записей в блоге: 14
05.02.2021, 19:07
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
def parse(expr):
    lex=[]
    tmp=""
    for a in expr:
        if a in ['+','-','*','/','(',')']:
            if len(tmp)>0:
                lex.append(tmp)
            lex.append(a)
            tmp=""
            continue
        if a==" ":
            pass
        else:
            tmp=tmp+a
    if len(tmp)>0:
        lex.append(tmp)
    return lex    
        
s=input()
r=parse(s)
print(*r,sep=chr(10))
1
3582 / 2182 / 571
Регистрация: 02.09.2015
Сообщений: 5,510
05.02.2021, 19:08
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
26
27
28
29
30
31
In [1]: from re import finditer
 
In [2]: tokenSpec = (
    ...:     ("OP",   r"[+\-*]",),
    ...:     ("BR",   r"[\(\)]",),
    ...:     ("NUM",  r"\d+",),
    ...:     ("SKIP", r"[ ]+",),
    ...:     ("MIS",  r"."),
    ...: )
 
In [3]: pattern = "|".join(f"(?P<{k}>{v})" for k, v in tokenSpec)
 
In [4]: expr = input()
1+(2*2 - 3)
 
In [5]: for mo in finditer(pattern, expr):
    ...:     kind = mo.lastgroup
    ...:     if kind == "SKIP":
    ...:         continue
    ...:     value = mo.group()
    ...:     print(value)
    ...:
1
+
(
2
*
2
-
3
)
3
Эксперт Python
8851 / 4502 / 1864
Регистрация: 27.03.2020
Сообщений: 7,317
05.02.2021, 19:25
Arsegg,

Не по теме:

все таки токенизатор )))

0
05.02.2021, 22:29

Не по теме:

Arsegg, кросавчег!

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
05.02.2021, 22:29
Помогаю со студенческими работами здесь

Разделение выражения на лексемы
Доброго времени суток уважаемые модераторы и простые граждане! Задано числовое выражение. Необходимо разбить его на лексемы и вывести...

Разделение строки на лексемы с strtok, проверка длины каждой лексемы (выдает ошибку)
я именно вот разделяю строку на лексемы и хочу проверить длину каждой лексемы, потом выполнить действия в зависимости от длины..но...

Разделение строки на лексемы.. strcmp
всем вечер добрый! Кто чем может, помогите плиз. Есть String STROKA; , туда записывается параметр из файла ini файла с помощь...

Строковый массив, разделение фразы на лексемы
Доброго времени суток. помогите разобраться. Зарастание спасибо. Разделил на лексемы всё отлично. #pragma hdrstop #pragma...

StringBuffer, разделение на лексемы и запись в массив
Здравствуйте :) Передо мной стоит вроде как легкая задача, но я не могу ее выполнить в силу того что с джавой пока на вы. Задача очень...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru