Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/47: Рейтинг темы: голосов - 47, средняя оценка - 4.77
0 / 0 / 0
Регистрация: 13.12.2020
Сообщений: 2

Калькулятор. Возведение в нужную степень

23.12.2020, 11:51. Показов 9652. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как мне добавить отдельную кнопку по возведению в нужную степень на калькуляторе (При этом не использовать **)?
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
from tkinter import *
import math
 
class Main(Frame):
    def __init__(self,root):
        super(Main,self).__init__(root)
        self.build()
    
    def build(self):
        self.formula = "0"
        self.lbl = Label(text = self.formula, font=("Times New Roman", 21, "bold"), bg = "#ff9", foreground = "#000")
        self.lbl.place(x=11, y=50)
        
        btns = [
            "C","DEL","*","=",
            "1","2","3","/",
            "4","5","6","+",
            "7","8","9","-",
            "(","0",")","x^2",
            "sqrt","^","sin"
            ]
        x = 10
        y = 140
        for bt in btns:
            com = lambda x = bt: self.logicalc(x)
            Button(text=bt,bg = "#ff9",
                   font = ("Times New Roman", 15),
                   command=com).place(x=x,y=y,
                                      width=115,
                                      height=79)
            x += 117
            if x > 400:
                x=10
                y += 81
    def logicalc(self, operation):
        if operation == "C":
            self.formula = ""
        elif operation == "DEL":
            self.formula = self.formula [0:-1]
        elif operation == "X^2":
            self.formula = str((eval(self.formula))**2)
        elif operation == "=":
            self.formula = str(eval(self.formula))
        elif operation == "sqrt":
            self.formula = str((eval(self.formula))**0.5)
        elif operation == "sin":
            self.formula = str(math.sin(eval(self.formula)))
        elif operation == "^":
            #???
        else:
            if self.formula == "0":
                self.formula =""
            self.formula += operation
        self.update()
    
    def update(self):
        if self.formula == "":
            self.formula = "0"
        self.lbl.configure(text=self.formula)
    
if __name__=='__main__':
    root = Tk()
    root ["bg"] = "#ff9"
    root.geometry("485x629+200+200")
    root.title("CALCULATOR")
    root.resizable(False,False)
    app = Main(root)
    app.pack()
    root.mainloop()
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.12.2020, 11:51
Ответы с готовыми решениями:

Возведение в степень
Нам нужно раздать студентам учебники по математике и истории. В классе 2 секции: в первой - 18 учеников, а во второй - 19. Общее...

Возведение в степень
Написать функцию возведения числа в степень

Возведение 2 в степень n
нужно посчитать остаток от числа 2 в степени n от 109+9 c = 2 n = int(input()) if n == 1: print(1) exit() for i in...

11
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
23.12.2020, 12:12
Лучший ответ Сообщение было отмечено GekHohol как решение

Решение

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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
from tkinter import *
import math
 
class Main(Frame):
    def __init__(self,root):
        super(Main,self).__init__(root)
        self.build()
    
    def build(self):
        self.formula = "0"
        self.lbl = Label(text = self.formula, font=("Times New Roman", 21, "bold"), bg = "#ff9", foreground = "#000")
        self.lbl.place(x=11, y=50)
        
        btns = [
            "C","DEL","*","=",
            "1","2","3","/",
            "4","5","6","+",
            "7","8","9","-",
            "(","0",")","x^2",
            "sqrt","^","sin"
            ]
        x = 10
        y = 140
        for bt in btns:
            com = lambda x = bt: self.logicalc(x)
            Button(text=bt,bg = "#ff9",
                   font = ("Times New Roman", 15),
                   command=com).place(x=x,y=y,
                                      width=115,
                                      height=79)
            x += 117
            if x > 400:
                x=10
                y += 81
                
    def calc(self,formula):
        k=formula.find("^")
        if k==-1:
           return str(eval(formula))
        else:
           a=formula[0:k]
           b=formula[k+1:]
           return str(eval("math.pow("+a+","+b+")"))           
                
    def logicalc(self, operation):
        if operation == "C":
            self.formula = ""
        elif operation == "DEL":
            self.formula = self.formula [0:-1]
        elif operation == "X^2":
            self.formula = str((eval(self.formula))**2)
        elif operation == "=":
            self.formula = self.calc(self.formula) #  str(eval(self.formula))
        elif operation == "sqrt":
            self.formula = str((eval(self.formula))**0.5)
        elif operation == "sin":
            self.formula = str(math.sin(eval(self.formula)))
        else:
            if self.formula == "0":
                self.formula =""
            self.formula += operation
        self.update()
    
    
    def update(self):
        if self.formula == "":
            self.formula = "0"
        self.lbl.configure(text=self.formula)
    
if __name__=='__main__':
    root = Tk()
    root ["bg"] = "#ff9"
    root.geometry("485x629+200+200")
    root.title("CALCULATOR")
    root.resizable(False,False)
    app = Main(root)
    app.pack()
    root.mainloop()
2
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
27.02.2022, 00:04
Как сделать извлечение корня n-ой степени из числа????
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,762
27.02.2022, 00:32
Python
1
2
3
4
5
>>> 3**4
81
>>> 81**(1/4)
3.0
>>>
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
27.02.2022, 09:21
isaak,

Python
1
2
def sqrtn(x):
    return x**(1/n)
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,762
27.02.2022, 12:04
Цитата Сообщение от Catstail Посмотреть сообщение
def sqrtn(x):
    return x**(1/n)
а n где?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
27.02.2022, 12:16
vic5710, ох...

Python
1
2
def sqrtn(x,n):
    return x**(1/n)
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
27.02.2022, 12:21
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from tkinter import *
import math
 
class Main(Frame):
    def __init__(self,root):
        super(Main,self).__init__(root)
        self.build()
    
    def build(self):
        self.formula = "0"
        self.lbl = Label(text = self.formula, font=("Times New Roman", 21, "bold"), bg = "#ff9", foreground = "#000")
        self.lbl.place(x=11, y=50)
        
        btns = [
            "C","DEL","*","=",
            "1","2","3","/",
            "4","5","6","+",
            "7","8","9","-",
            "(","0",")","x^2","x^n",
            "sqrt", "sqrtn(x)","^","sin"
            ]
        x = 10
        y = 140
        for bt in btns:
            com = lambda x = bt: self.logicalc(x)
            Button(text=bt,bg = "#ff9",
                   font = ("Times New Roman", 15),
                   command=com).place(x=x,y=y,
                                      width=115,
                                      height=79)
            x += 117
            if x > 400:
                x=10
                y += 81
                
    def calc(self,formula):
        k=formula.find("^")
        if k==-1:
           return str(eval(formula))
        else:
           a=formula[0:k]
           b=formula[k+1:]
           return str(eval("math.pow("+a+","+b+")"))    
   
    
    def sqrtn(x):
        return x**(1/n)
 
                
    def logicalc(self, operation):
        if operation == "C":
            self.formula = ""
        elif operation == "DEL":
            self.formula = self.formula [0:-1]
        elif operation == "X^2":
            self.formula = str((eval(self.formula))**2)
        elif operation == "=":
            self.formula = self.calc(self.formula) #  str(eval(self.formula))
        elif operation == "X^n":
            self.formula = str((eval(self.formula))**n)
        elif operation == "sqrt":
            self.formula = str((eval(self.formula))**0.5)
        elif operation == "sqrtk(x)":
            self.formula = str((eval(self.formula))**(1/n))
        elif operation == "sin":
            self.formula = str(math.sin(eval(self.formula)))
        else:
            if self.formula == "0":
                self.formula =""
            self.formula += operation
        self.update()
    
    
    def update(self):
        if self.formula == "":
            self.formula = "0"
        self.lbl.configure(text=self.formula)
    
if __name__=='__main__':
    root = Tk()
    root ["bg"] = "#ff9"
    root.geometry("485x629+200+200")
    root.title("CALCULATOR")
    root.resizable(False,False)
    app = Main(root)
    app.pack()
    root.mainloop()
Подскажите пожалуйста как исправить ошибки при вычислении возведения в n-ую степень и извлечение корня n-ой степени из числа???? Ошибки выдает????
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
27.02.2022, 12:51
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
from tkinter import *
import math
 
class Main(Frame):
    def __init__(self,root):
        super(Main,self).__init__(root)
        self.build()
    
    def build(self):
        self.formula = "0"
        self.lbl = Label(text = self.formula, font=("Times New Roman", 21, "bold"), bg = "#ff9", foreground = "#000")
        self.lbl.place(x=11, y=50)
        
        btns = [
            "C","DEL","*","=",
            "1","2","3","/",
            "4","5","6","+",
            "7","8","9","-",
            "(","0",")","x^2",
            "sqrt", "sqrtn(x,n)","^","sin"
            ]
        x = 10
        y = 140
        for bt in btns:
            com = lambda x = bt: self.logicalc(x)
            Button(text=bt,bg = "#ff9",
                   font = ("Times New Roman", 15),
                   command=com).place(x=x,y=y,
                                      width=115,
                                      height=79)
            x += 117
            if x > 400:
                x=10
                y += 81
                
    def calc(self,formula):
        k=formula.find("^")
        if k==-1:
           return str(eval(formula))
        else:
           a=formula[0:k]
           b=formula[k+1:]
           return str(eval("math.pow("+a+","+b+")"))    
   
    
    def sqrtn(x,n):
        return x**(1/n)
 
                
    def logicalc(self, operation):
        if operation == "C":
            self.formula = ""
        elif operation == "DEL":
            self.formula = self.formula [0:-1]
        elif operation == "X^2":
            self.formula = str((eval(self.formula))**2)
        elif operation == "=":
            self.formula = self.calc(self.formula) #  str(eval(self.formula))
        elif operation == "X^n":
            self.formula = str((eval(self.formula))**n)
        elif operation == "sqrt":
            self.formula = str((eval(self.formula))**0.5)
        elif operation == "sqrtn(x,n)":
            self.formula = str((eval(self.formula))**(1/n))
        elif operation == "sin":
            self.formula = str(math.sin(eval(self.formula)))
        else:
            if self.formula == "0":
                self.formula =""
            self.formula += operation
        self.update()
    
    
    def update(self):
        if self.formula == "":
            self.formula = "0"
        self.lbl.configure(text=self.formula)
    
if __name__=='__main__':
    root = Tk()
    root ["bg"] = "#ff9"
    root.geometry("485x629+200+200")
    root.title("CALCULATOR")
    root.resizable(False,False)
    app = Main(root)
    app.pack()
    root.mainloop()
Подскажите пожалуйста как исправить ошибки при вычислении извлечении корня n-ой степени из числа??? Где еще n нужно определить???? Я уже его определил????
Миниатюры
Калькулятор. Возведение в нужную степень  
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38161 / 21096 / 4306
Регистрация: 12.02.2012
Сообщений: 34,683
Записей в блоге: 14
27.02.2022, 14:49
А где в коде вводится n?
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,304
27.02.2022, 15:20
Как правильно сделать ввод n???? Весь мозг себе сломал????
0
0 / 0 / 0
Регистрация: 06.02.2022
Сообщений: 99
27.02.2022, 16:12
Помогите решить задачу.?? Задача 1. «Калькулятор»

Добавлено через 34 секунды
Помогите решить задачу.?? Задача 2. «Калькулятор+»
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
27.02.2022, 16:12
Помогаю со студенческими работами здесь

Возведение в степень
Нужно возвести число в 16 степень, используя минимальное количество операторов и переменных и операцию умножения. Уже есть такая...

Возведение в степень
Необходимо написать программу, которая возводит в заданную степень все числа, переданные пользователем. Формат ввода: В первой строке...

Возведение в степень
Напишите программу, которая возводит введенное число в степень 10, используя только четыре операции умножения. Операцию возведения в...

Возведение в степень
Дано действительное положительное число a и целое неотрицательное число n. Вычислите aⁿ, не используя циклы и стандартную функцию...

Возведение в степень
Для того чтобы проверить, как её ученики умеют считать, Мария Ивановна каждый год задаёт им на дом одну и ту же задачу – для заданного...


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru