IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 基于Python实现可以进制转换和计算阶乘的科学计算器 -> 正文阅读

[Python知识库]基于Python实现可以进制转换和计算阶乘的科学计算器

类似项目 👁

项目背景??

???????本人已经做了两个基于Python的计算器项目,有需要的话,请看本文头部。这次基于Python制作一个科学计算器 项目,创建一个科学计算器。

项目需求💥

1、科学计算器应包括:计算器界面、0-9数字按键、清零和各功能按键;
2、功能1:二进制、八进制、十进制、十六进制、四种进制可相互切换;
3、功能2:加减乘除基本运算、平方、开方、x^y、 x^3等;
4、功能3:tan、cos、sin、n!、log等

代码展示💻

from tkinter import StringVar, Entry, Button
from tkinter import Tk
import math


class calculator:
    def __init__(self):
        window = Tk()
        window.title('基于TK的科学计算器')
        window.configure(background="white")
        self.string = StringVar()
        entry = Entry(window, textvariable=self.string, )
        entry.grid(row=0, column=0, columnspan=6)
        entry.configure(background="white")
        entry.focus()

        values = ["C", "DEL", "(", ")", "%", "!",
                  "sin", "sqrt", "e", "pow", "/", "oct",
                  "cos", "7", "8", "9", "*", "int",
                  "tan", "4", "5", "6", "-", "hex",
                  "pi", "1", "2", "3", "+", "bin",
                  "log", ",", "0", ".", "="]

        text = 1
        i = 0
        row = 1
        col = 0
        for txt in values:
            padx = 10
            pady = 10
            if (i == 6):
                row = 2
                col = 0
            if (i == 12):
                row = 3
                col = 0
            if (i == 18):
                row = 4
                col = 0
            if (i == 24):
                row = 5
                col = 0
            if (i == 30):
                row = 6
                col = 0
            if (txt == '='):
                btn = Button(window, height=2, width=4, padx=50, pady=pady, text=txt,
                             command=lambda txt=txt: self.equals())
                btn.grid(row=row, column=col, columnspan=3, padx=2, pady=2)
                btn.configure(background="yellow")

            elif (txt == 'DEL'):
                btn = Button(window, height=2, width=4, padx=padx, pady=pady, text=txt,
                             command=lambda txt=txt: self.delete())
                btn.grid(row=row, column=col, padx=1, pady=1)
                btn.configure(background="grey")
            elif (txt == 'C'):
                btn = Button(window, height=2, width=4, padx=padx, pady=pady, text=txt,
                             command=lambda txt=txt: self.clearall())
                btn.grid(row=row, column=col, padx=1, pady=1)
                btn.configure(background="red")
            else:
                btn = Button(window, height=2, width=4, padx=padx, pady=pady, text=txt,
                             command=lambda txt=txt: self.addChar(txt))
                btn.grid(row=row, column=col, padx=1, pady=1)
                btn.configure(background="white")

            col = col + 1
            i = i + 1
        window.mainloop()

    def fac(self):
        n = int(self.string.get()[0:1])
        print(n)
        num = 1
        if n < 0:
            print('负数没有阶乘!')
        elif n == 0:
            print('0的阶乘为1!')
        else:
            for i in range(1, n + 1):
                num *= i
        return self.string.set(num);

    def clearall(self):
        self.string.set("")

    def equals(self):
        result = ""
        try:
            if self.string.get().find('!')==True:
                self.fac()
            result = eval(self.string.get())
            self.string.set(result)
        except:
            result = "无效输入"
        self.string.set(result)

    def addChar(self, char):
        i = ['log', 'sqrt', 'pi', 'sin', 'cos', 'tan', 'e', "gcd", "radians", "degrees", "ceil", "hypot"]
        if char in i:
            self.string.set(self.string.get() + 'math.' + (str(char)))
            print("addchar的if语句"+self.string.get().format(()) + "   " + str(char))

        else:
            self.string.set(self.string.get() + (str(char)))
            print("addchar的else语句"+self.string.get() + "  " + str(char))

    def delete(self):
        self.string.set(self.string.get()[0:-1])


calculator()

源码下载 🚗

点击这段文字,可以下载源码!如果有帮助到你,欢迎打赏!

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-06-01 15:11:50  更:2022-06-01 15:12:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:06:40-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码