Guest User

Untitled

a guest
Mar 31st, 2015
448
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.20 KB | None | 0 0
  1. #!/usr/bin/python
  2. # -*- coding:utf-8 -*-
  3. """<one line to give the program's name and a brief idea of what it does.>
  4. Copyright (C) 2015 Sadovnikov Dmitriy Pavlovich mail: [email protected]
  5. This program is free software: you can redistribute it and/or modify
  6. it under the terms of the GNU General Public License as published by
  7. the Free Software Foundation, either version 3 of the License, or
  8. (at your option) any later version.
  9. This program is distributed in the hope that it will be useful,
  10. but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. GNU General Public License for more details.
  13. You should have received a copy of the GNU General Public License
  14. along with this program. If not, see <http://www.gnu.org/licenses/>."""
  15. """Добавлена поддержка степеней"""
  16. """Добавлена поддержка длинных выражений, но без учета приоритета операций"""
  17.  
  18.  
  19. """Описание функций"""
  20. # Версия программы
  21. def ver():
  22. print 'ver 0.1.3.6.2'
  23.  
  24. def prog(): # тело программы
  25. text = lang()
  26. enter_num(text)
  27.  
  28. def enter_num(text): # функция ввода выражения
  29. test = ['+', '/', '*', '-', '^'] #стек доступных операций
  30. print text[1]
  31. func = raw_input()
  32. func = func.split() #запрос от пользователя выражения(приоритет операций не учитывается)
  33. if len(func) >= 3: #проверка колличества элементов в выражении
  34. x = float(func[0]) #определение значения Х
  35. y = float(func[2]) #определение значения У
  36. oper = func[1] #определение математической операции
  37. if y == 0 or x >= 4294967296 or y >= 4294967296: #проверка Х и У на допустимость значений
  38. error(text) #Вызов ошибки
  39. else:
  40. if oper in test:
  41. prog_calc(x, y, text, oper, func) #Вызов калькулятора
  42. else:
  43. error(text) #Вызов ошибки
  44. else:
  45. error(text) #Вызов ошибки
  46.  
  47. def prog_calc(x, y, text, oper, func): # функция калькулятора
  48. #calc(x, y, text, oper)
  49. n = 2
  50. calc_long(func, text, oper, n, x, y) #Вызов арефметической функции вычислений.
  51. exit(text) #Выход
  52.  
  53. """Какой-то индусский код"""
  54. def calc_long(func, text, oper, n, x, y): #функция длинных выражений
  55. """Определение операции и выполнение вычисления"""
  56. if (oper == "+"):
  57. ans = x + y
  58. elif oper == "-":
  59. ans = x - y
  60. elif oper == "*":
  61. ans = x * y
  62. elif oper == "/":
  63. ans = x / y
  64. elif oper == "^":
  65. ans = x**y
  66. else:
  67. error(text) #Вывод ошибки
  68. """Рекурсия воследовательного перехода между операциями"""
  69. if n < len(func) - 2:
  70. n = n + 2 #Номер текущей выполняемой операции
  71. y = float(func[n]) #Переназначение У исходя из номера операции
  72. oper = func[n - 1] #Перемещение между операциями
  73. x = ans #Сбор решения в одну переменную
  74. calc_long(func, text, oper, n, x, y) #Тащемта рекурсия 0_о
  75. else:
  76. print text[5], ans #Вывод ответа
  77.  
  78. def lang(): # функция выбора языка
  79. """Английский массив"""
  80. eng_text = ['Enter languge(Russian - 1, English - 2)',
  81. 'Enter the X and Y with the sign(+,-,*,/,^) by a space. for example: x + y',
  82. 'Enter menu number',
  83. 'To continue press 2, to EXIT press 1',
  84. 'Some thing is wrong... try agane and press 2, or press 1 to EXIT',
  85. 'Answare = ',
  86. ' change the languge press 3']
  87. """Русский массив"""
  88. rus_text = ["Выбите язык(Русский - 1, Английский - 2)",
  89. "Введите X и Y со знаком(+,-,*,/,^) через пробел. Например: x + y",
  90. 'Выберите пункт меню',
  91. "Для продолжения нажмите 2, для ВЫХОДА нажмите 1",
  92. "Что-то случилось... для продолжения нажмите 2, или 1 для ВЫХОДА",
  93. "Ответ = ",
  94. "для смены языка нажмите 3"]
  95. def choose_lang(int_lang, eng_text, rus_text):
  96.  
  97. int_lang = input() #Запрос выбора языка
  98. if int_lang == 1: #Определение языка программы
  99. text = rus_text
  100. elif int_lang == 2:
  101. text = eng_text
  102. else:
  103. print 'error/ошибка' #Вывод ошибки
  104. prog() #Повторный запрос выбора языка в случае ошибки
  105. return text
  106. int_lang = 0
  107. print eng_text[0]
  108. print rus_text[0]
  109. text = choose_lang(int_lang, eng_text, rus_text)
  110. return text
  111.  
  112. """def calc(x, y, text, oper): # функция коротких выражений (ныне выключена)
  113. if (oper == "+"):
  114. ans = x + y
  115. elif oper == "-":
  116. ans = x - y
  117. elif oper == "*":
  118. ans = x * y
  119. elif oper == "/":
  120. ans = x / y
  121. elif oper == "^":
  122. ans = x**y
  123. else:
  124. error(text)
  125. #print text[5], ans"""
  126.  
  127. """поддержка скобок(Пока не реализованна)"""
  128. def brackets (func):
  129. pass
  130.  
  131. def error(text): # функция вывода ошибки
  132. print text[4], text[6] #Меню вывода ошибки и запрос дальнейшего действия
  133. err = input()
  134. if err == 2: #Меню - продолить
  135. enter_num(text)
  136. elif err == 3: #Меню - вернуться к выбору языка
  137. prog()
  138. elif err == 1: #Меню - выход
  139. exit(text)
  140. else:
  141. error(text) #Вывод ошибки
  142.  
  143. def exit(text): # функция выхода
  144. print text[3], text[6] #вывод меню выхода
  145. exi = input() #Запрос выбора пользователя
  146. if exi == 2: #меню - продолжить
  147. enter_num(text)
  148. elif exi == 3:
  149. prog() #меню - вернуться к выбору языка
  150. elif exi == 1:
  151. pass #меню - окончательный выход
  152. else:
  153. error(text) #вывод ошибки
  154.  
  155. """Конец описания функций"""
  156.  
  157.  
  158. """Выполнение программы"""
  159. ver() #вывод версии программы
  160. prog() #запуск программы
Advertisement
Add Comment
Please, Sign In to add comment