Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 12, 2015 10:06:36

Hjort
Зарегистрирован: 2015-10-12
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

Скрипт прикладываю.

Приветствую!Новичок кодить на Питоне(да и вообще кодить). Накидал первым приложением небольшой калькулятор на Python3+QT. Работал с выражениями как со строкой, разделяя по операторам и уже выполняя операции с числами через переменные. Пока не заметил одну неприятную печаль. Отрицательные числа по такому алгоритму совершенно не вычисляются, ибо в выражении могут присутствовать до трех знаков минус. Т.к. с остальным кодом проблем нет, вопрошаю совета, ибо переписывать не хочется, хочется добить.Тем более хочу в дальнейшем додумать и рассчитывать более сложные выражения,например:8*9+5-3.

Отредактировано Hjort (Окт. 12, 2015 10:07:32)

Прикреплённый файлы:
attachment calc.py (12,2 KБ)

Офлайн

#2 Окт. 12, 2015 11:15:52

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

1) Используй дизайнер!
2) Калькулятор я бы делал через стек.

> Тем более хочу в дальнейшем додумать и рассчитывать более сложные выражения,например:8*9+5-3.
event тебе в помощь.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Окт. 12, 2015 11:22:36

Hjort
Зарегистрирован: 2015-10-12
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

Rodegast
1)Хотел писать через код научиться, чтоб было.С дизайнером познакомился уже
2)Про стек почитаю, в принципе отделаться можно меньшим злом.

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

Отредактировано Hjort (Окт. 12, 2015 11:24:14)

Офлайн

#4 Окт. 12, 2015 11:30:48

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

> Хотел писать через код научиться, чтоб было.
Не учись плохому

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



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Окт. 12, 2015 14:00:58

Hjort
Зарегистрирован: 2015-10-12
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

Rodegast
Так.Пробую стеками.Вышло с расчетами, например -5+2, но всплывает проблема когда -5-2(а еще может быть -5- -2, но тут можно знак - - менять автоматом на +).
Делал так:
queue.append(self.ent.text())
#добавил первое число из EditLine в момент нажатия операции
и тут же добавил знак операции:
queue.append(“+”)
но вот третье число получаю split'ом по оператору и не могу сообразить как его выдернуть по другому
Находит первый минус и все, беда.
Можно было бы сделать так:обновлять EditLine.После нажатия на оператор делать его пустым и потом уже брать оттуда вторую переменную(как в ХР) , но как-то не наглядно.

Отредактировано Hjort (Окт. 12, 2015 14:02:15)

Офлайн

#6 Окт. 12, 2015 14:46:07

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

>>> minus = lambda s: reduce(lambda x, y: x - y, s)
>>> stek = []
>>> stek.append(-2)
>>> stek.append(-5)
>>> minus(stek)
3
>>> sum(stek)
-7



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Окт. 12, 2015 14:59:39

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2843
Репутация: +  186  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

Вот тут чел. сделал калькулятор на ###. На его примере можеш посмотреть как со стеком работать http://forum.ubuntu.ru/index.php?topic=205778.0



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#8 Окт. 13, 2015 06:14:33

Hjort
Зарегистрирован: 2015-10-12
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

Rodegast
Не, я не о том.
Со стеками разобрался.
Проблема вот в чем: я записываю в QEditLine выражение, например, -5+6
в стек закидываю первое число -5 таким образом:stek.append(self.ent.text()), после нажатия кнопки +, а также после нажатия кнопки в стек закидываю оператор:stek.append(“+”).
Вот проблема со вторым числом,я бы мог сделать вот так:
y = self.ent.get()
y = y.split('+')
y = y*квадратные скобки*1*квадратные скобки*
Но это работает с любым оператором, кроме ‘-’, т.к. вхождения в строку начинаются уже с первого символа.
Выход пока вижу только один.
Вводит пользователь первое число в QlineEdit, после нажатия оператора записывать в стек первое число и оператор(но тут можно и простыми переменными обойтись), очищать QLineEdit, вводит пользователь второе число,после нажатия ‘=’, записывать в стек второе число и тогда уже производить расчеты, но тогда наглядного выражения не получаю.
В примере калькуляторы, что скинули, есть один момент: он вводит сначала цифры,а потом оператор, у меня же все по порядку и проблема кроется именно в минусе, мне бы как-то игнорировать первый минус вхождения и делать split со второго минуса, вот в чем вопрос! Посчитать .count можно количество вхождений, но всеравно не получается сделать split именно со второго вхождения символа ‘-’

Отредактировано Hjort (Окт. 13, 2015 06:19:04)

Офлайн

#9 Окт. 13, 2015 09:41:05

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

Hjort
мне бы как-то игнорировать первый минус вхождения и делать split
Вам надо прочитать http://static.my-shop.ru/product/pdf/128/1278676.pdf
https://ru.wikipedia.org/wiki/GNU_bison
https://pyparsing.wikispaces.com/
http://www.dabeaz.com/ply/

А вообще не нужно выдумывать учебных задачек. Реальных хватает с головой.



Отредактировано doza_and (Окт. 13, 2015 09:42:03)

Офлайн

#10 Окт. 13, 2015 09:52:02

Hjort
Зарегистрирован: 2015-10-12
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Калькулятор на PyQt.Проблема с отрицательными числами.

doza_and
С чего же мне начать?Мне показалось разумным, не выдумывать, а сделать свой аналог ПО, повторить пройденное.Тем более я не начал с консольных программок вычисления квадратного корня…

Насчет ресурсов: Parsing выглядит любопытно, спасибо, попробую.

Отредактировано Hjort (Окт. 13, 2015 09:52:11)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version