Python
Калькулятор tkinter python
Не знаю как можно сделать вычисление с корнем. Например в Entry запись "10+√9*4". Как эту запись можно преобразовать в "10+3*4"?
Для решения данной задачи, можно воспользоваться модулем math в Python, который имеет функцию sqrt() для нахождения квадратного корня.
Вам нужно разбить строку из Entry на отдельные элементы (цифры, знаки операций и символ корня) и обработать каждый элемент в соответствии с его типом.
Пример решения:
python
Copy code
import tkinter as tk
import math
def calculate():
expression = entry.get() # получаем строку из Entry
expression = expression.replace("√", "math.sqrt(") # заменяем символ корня на функцию sqrt()
try:
result = eval(expression) # вычисляем выражение
entry.delete(0, tk.END) # очищаем Entry
entry.insert(0, result) # выводим результат
except:
entry.delete(0, tk.END)
entry.insert(0, "Error")
root = tk.Tk ()
entry = tk.Entry(root, width=30)
entry.pack()
button = tk.Button(root, text="Calculate", command=calculate)
button.pack()
root.mainloop()
При вводе строки "10+√9*4" в Entry, программа заменит символ корня на функцию sqrt() и выполнит вычисление, результат будет выведен в Entry.
Вам нужно разбить строку из Entry на отдельные элементы (цифры, знаки операций и символ корня) и обработать каждый элемент в соответствии с его типом.
Пример решения:
python
Copy code
import tkinter as tk
import math
def calculate():
expression = entry.get() # получаем строку из Entry
expression = expression.replace("√", "math.sqrt(") # заменяем символ корня на функцию sqrt()
try:
result = eval(expression) # вычисляем выражение
entry.delete(0, tk.END) # очищаем Entry
entry.insert(0, result) # выводим результат
except:
entry.delete(0, tk.END)
entry.insert(0, "Error")
root = tk.Tk ()
entry = tk.Entry(root, width=30)
entry.pack()
button = tk.Button(root, text="Calculate", command=calculate)
button.pack()
root.mainloop()
При вводе строки "10+√9*4" в Entry, программа заменит символ корня на функцию sqrt() и выполнит вычисление, результат будет выведен в Entry.
Выше г*бот разумеется подсунул решение через eval. За это с работы гонят в шею, eval в программе - находка для злоумышленника...
Вот тебе без евалов и главное без г*ботов
https://pastebin.com/3StbaWmh
Вот тебе без евалов и главное без г*ботов
https://pastebin.com/3StbaWmh
Для вычисления выражений с корнем вам может понадобиться использовать библиотеку `math`. Вот пример кода, который может помочь вам решить вашу задачу:
```python
import math
expression = "10+√9*4"
expression = expression.replace('√', 'math.sqrt(') + ')'
result = eval(expression)
print(result)
```
На выходе мы получаем результат выражения "10+3*4", который равен 22.
```python
import math
expression = "10+√9*4"
expression = expression.replace('√', 'math.sqrt(') + ')'
result = eval(expression)
print(result)
```
На выходе мы получаем результат выражения "10+3*4", который равен 22.
Андрей Ахметдинов
Про то что eval в реальных проектах не используется я уже написал. И всё равно - как об стену горох....
Сергей Сачков
То что там есть √9*4 он это считает за √36, и в ответе не 22, а 16
Похожие вопросы
- Помогите с программой на python библиотека tkinter
- Кто поможет сократить код на tkinter
- Ошибка _tkinter.TclError: image "F:/pyProjects/project1.0/folder1/folder2/image.png" doesn't exist
- Tkinter Canvas заливка
- Tkinter виджеты неправильно выводятся
- Окончил курсы на степике по Python что делать дальше?
- Python программирование. Помогите написать программу.
- Нейронные сети на Python 3.4
- Помогите, как сделать авторизацию в программе на python?
- Что писать на Python?
За такой код увольняют с работы. Eval это фактически запрещенный метод, вменяемый программист его использовать никогда не будет