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

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

23.12.2020, 11:51. Показов 9703. Ответов 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
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 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,329
27.02.2022, 00:04
Как сделать извлечение корня n-ой степени из числа????
0
963 / 718 / 276
Регистрация: 10.12.2016
Сообщений: 1,764
27.02.2022, 00:32
Python
1
2
3
4
5
>>> 3**4
81
>>> 81**(1/4)
3.0
>>>
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 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,764
27.02.2022, 12:04
Цитата Сообщение от Catstail Посмотреть сообщение
def sqrtn(x):
    return x**(1/n)
а n где?
1
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 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,329
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,329
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
38178 / 21113 / 4307
Регистрация: 12.02.2012
Сообщений: 34,716
Записей в блоге: 14
27.02.2022, 14:49
А где в коде вводится n?
0
90 / 125 / 28
Регистрация: 17.10.2010
Сообщений: 1,329
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
Ответ Создать тему
Новые блоги и статьи
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru