Форум программистов, компьютерный форум, киберфорум
Наши страницы
Python
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/13: Рейтинг темы: голосов - 13, средняя оценка - 5.00
Fullmax
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 5
1

Программа для вычесления простых математических выражений

12.06.2013, 20:15. Просмотров 2393. Ответов 10
Метки нет (Все метки)

Доброго времени суток форумчане.Сам я новичок в python. Помогите создать программу для вычесления простых математических выражений. Допустим чтоб пользователь вводил в строку не символьно 2+2, а словестно два плюс два. После чего выдавался символьный ответ 4. Так же хотелось, чтоб программа могла вычеслять: /,*,-,+,корень и степень. Буду благодарен любой помощи.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.06.2013, 20:15
Ответы с готовыми решениями:

Решение простых математических примеров (ввод с клавиатуры)
Очень нужна помощь с заданием по программированию. Суть в следующем:...

Парсер математических выражений
Есть код для парсера математических выражений (калькулятора) для операций: +,...

Парсер простых математических выражений
Доброго времени суток, люди помогите перелопатил весь нет не могу решить одну...

Генератор простых математических выражений
Для одного небольшого проекта надо генерировать простые математические...

Парсер для математических выражений
Здравствуйте уважаемые товарищи форумчане. Я пишу интерпретатор математических...

10
WhiteMan
14 / 14 / 2
Регистрация: 28.05.2012
Сообщений: 104
Записей в блоге: 2
12.06.2013, 20:57 2
Python
1
2
3
4
5
6
7
8
d = {'один':'1', 'два':'2', 'плюс':'+'}
i=raw_input()
i = i.split()
r=''
for k in i:
    r += d[k]
r=eval(r)
print r
1
fanatdebian
Z3JheSBoYXQ=
339 / 234 / 83
Регистрация: 08.07.2012
Сообщений: 577
12.06.2013, 20:58 3
Это синтаксический анализатор. Прообраз компилятора. Сама по себе реализация не сложна, алгоритмов полно в сети. Но лучше узнать как рыбу удить, чем просить рыбака. Для начала начни с этого дальше отвечай на возникающие вопросы и вот скоро ты сам в состоянии будешь реализовать подобную задачу - http://computerlib.narod.ru/html/python.htm.
2
Fullmax
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 5
18.06.2013, 13:13  [ТС] 4
d = {'odin':'1', 'dva':'2', 'nlus':'+', 'tri':'3', 'chetire':'4', 'minys':'-', 'nodelitb':'/', 'ymnogit':'*', 'koren is':'sqrt'}
i=raw_input()
i = i.split()
r=''
for k in i:
r += d[k]
r=eval(r)
print r
i=raw_input()
i = i.split()
r=''
for k in i:
r -= d[k]
r=eval(r)
print r
i=raw_input()
i = i.split()
r=''
for k in i:
r /= d[k]
r=eval(r)
print r
i=raw_input()
i = i.split()
r=''
for k in i:
r *= d[k]
r=eval(r)
print r
Вот я составил программу решает /,*,-,+. А как запрограммировать корень и возведение в степень. И вот ещё постоянно надо нажимать на F5, чтобы сбросить параметры, куда мне запихнуть return и в каком виде ?
0
funtaps
15 / 15 / 2
Регистрация: 14.06.2013
Сообщений: 45
18.06.2013, 21:30 5
Прости, но нет. Ты не "оставил программу решает /,*,-,+". Где ты нажимаешь F5 и зачем куда-то пихать return тоже не ясно. Подозреваю, что ты хочешь что-то наподобии такого:
1. В консоли пишешь python и жмешь Enter (Консоль вызывается по-разному, в зависимости от операционной системы)
2. Если перед курсором есть ">>>", то переходи к пункту 4
3. Иначе зайди сюда http://www.activestate.com/activepython/downloads скачай и установи python и возвращайся к пункту 1
4. Открой в блокноте новый файл, вставь в него
Python
1
2
3
4
5
6
7
8
9
10
dict = {'один': '1', 'два': '2', 'плюс': '+', 'минус': '-', 'умножить': '*'}
def eval_and_count(input):
    i = input.split()
    code = ''
    for k in i:
        code += dict[k]
    result = eval(code)
    print result
 
eval_and_count(raw_input())
Не упусти пробелы и переносы строк!
5. Сохрани этот файл куда-нибудь с расширением .py (например C:\scripts\test.py)
5. Если в консоле у тебя еще написано ">>>", напиши "exit()" (без кавычек) и Enter
6. Теперь пишешь в консоле python ПОЛНЫЙ_АДРЕС_ФАЙЛА в нашем случае это будет
Bash
1
python C:\scripts\test.py
7. Ты увидешь мигающий курсор. Напиши, например, "один плюс два" (без кавычек) и Enter. Ты увидешь ответ (3).
8. Чтобы запустить скрипт еще раз, надо в консоли нажать стрелку вверх (ты увидешь появившуюся надпись python C:\scripts\test.py) и Enter
9. Для расширение функциональности (добавления других чисел и знаков) редактируй только верхнюю строчку

P.S. Если хочешь научиться программированию, то ты это делаешь как-то не так.
1
Fullmax
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 5
18.06.2013, 21:54  [ТС] 6
Очень даже помог. Ясно, понятно. Значит если я хочу добавить, что то то я добавляю в строку "dict = {'один': '1', 'два': '2',...."
А как туда добавить возведение в степень и корень ?
0
funtaps
15 / 15 / 2
Регистрация: 14.06.2013
Сообщений: 45
18.06.2013, 22:12 7
Возведение в степень просто добавляешь
Python
1
'ВСТЕПЕНЬ': '**'
(при такой архитектуре с пробелами команды и числа добавить не получится)
Корень тоже так не сделаешь.
Писать за тебя целиком программу пока не вижу большого смысла. Хотя, наверное, если объяснишь зачем тебе надо готовое решение (оно будет достаточно сложным, чтобы ты в нем скорее всего не смог разобраться), могу написать. Если хочешь учиться программировать на питоне прочти какую-нибудь литературу лучше, чем проси других за тебя что-то делать.
P.S. Если получилось грубовато, прости, я не очень умею письмено эмоции выражать хорошо, я никаких наездов не имел ввиду, а имел ввиду вопрос: "Какая твоя цель?" и предположение, что ты идешь к этой цели не так, как стоило бы. Если ты объяснишь, что хочешь в итоге, может быть я смогу помочь направить тебя по неплохому пути.
0
Fullmax
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 5
19.06.2013, 05:17  [ТС] 8
Цитата Сообщение от funtaps Посмотреть сообщение
P.S. Если получилось грубовато, прости, я не очень умею письмено эмоции выражать хорошо, я никаких наездов не имел ввиду, а имел ввиду вопрос: "Какая твоя цель?" и предположение, что ты идешь к этой цели не так, как стоило бы. Если ты объяснишь, что хочешь в итоге, может быть я смогу помочь направить тебя по неплохому пути.
Нет , нет все норм. Просто учусь работать с питоном. Ставлю себе задачу, неполучается вот и обратился.
0
funtaps
15 / 15 / 2
Регистрация: 14.06.2013
Сообщений: 45
19.06.2013, 08:22 9
Как у тебя с английским?
1
Fullmax
0 / 0 / 0
Регистрация: 12.06.2013
Сообщений: 5
19.06.2013, 14:41  [ТС] 10
Не особо, хотя я уже понял из чего состоит программа. А вот сможеж помочь советом или ссылкой на книжки.
Нужна программа которая масив [1,+,2,-,4,*,6,/,8] разобьёт на символы и цифры , а потом решит постепенно, т.е след массив будет [1,+,2,-,24,/,8] => [1,+,2,-,3] и т.д. На сколько я понял это разбор математических выражений и составляется с помощью алгаритма сортировочной станции.
0
funtaps
15 / 15 / 2
Регистрация: 14.06.2013
Сообщений: 45
19.06.2013, 15:50 11
http://www.codecademy.com/ru/tracks/python (не знаю, хватит ли тебе английского)
http://rutracker.org/forum/viewtopic.php?t=4130425
0
19.06.2013, 15:50
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.06.2013, 15:50

Написать парсер математических выражений с функцией упрощения этих выражений
Люди, здравствуйте. Есть такая задача: написать упроститель выражений. На...

Создать калькулятор для вычисления математических выражений
Добрый день. Стоит задача сделать калькулятор который будет при вводе...

Конечный автомат для разбора математических выражений
Написал конечный автомат для разбора математических выражений вида 2*5 -...


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

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru