科学计数法是一种数字表现形式,可以有效对数值的显示进行折叠。

今天我们来做一款科学计数法模拟器

我们来看看这个功能有什么用处

科学计数法模拟器

这个功能的难点在于bug的处理

会遇到各种错误计算,我们来详细说明代码

首先是前端页面代码:

#平时不以科学计数法输出
class basedesk():#底板def __init__(self, master):self.master = masterself.master.title("科学计数法模拟器")self.master.configure(bg='#B1FFF9')self.master.geometry("1000x600")mainwindow(self.master)
class mainwindow():#主界面def __init__(self, master):self.master = masterself.window = tk.Frame(self.master, bg='#e5ffe5')self.window.place(x=0,y=0,width=1000,height=600)self.window.showname_label=tk.Label(self.window,text="科学计数法模拟器",fg='#26734d', bg='#ffe5ff',font=("Helvetic",60,"bold"),relief=RAISED).place(x=0, y=10,width=1000, height=150)self.window.enter_btn=tk.Button(self.window,text="开始",bg='#ffffe5',fg='#333399',font=("Helvetic", 60, "bold"),command=self.changetofunction).place(x=360, y=300,width=250, height=150)def changetofunction(self,):self.window.destroy()functionwindow(self.master)
class functionwindow():def __init__(self, master):self.master = masterself.window = tk.Frame(self.master, bg='#e5f9ff')self.window.place(x=0, y=0, width=1000, height=600)self.window.show_label = tk.Label(self.window, text="x10", font=("Helvetic", 40, "bold"), bg='#e5f9ff').place(x=455, y=180)self.entry1=tk.Entry(self.window, font=("Helvetica", 20))self.entry1.place(x=150, y=200, width=300, height=40)self.entry2 = tk.Entry(self.window, font=("Helvetica", 20))self.entry2.place(x=560, y=160, width=300, height=40)self.window.enter_btn=tk.Button(self.window,text="计算",bg='#ffffe5',fg='#333399',font=("Helvetic", 60, "bold"),command=self.calculate).place(x=360, y=300,width=250, height=150)

后端计算逻辑代码:

    def calculate(self):a=self.entry1.get()b=self.entry2.get()try:float(a)float(b)except:messagebox.showerror("错误","必须输入数字")returnif len(a)>10:messagebox.showerror('错误','a的数值太离谱啦')returnif float(b)>1000 or float(b)<-1000:messagebox.showerror("错误",'b的数值太离谱啦')returnif float(a)<1 or float(a)>=10:messagebox.showerror('错误','科学计数法格式不对,左边的输入应大于等于1小于10')returnif '.' in b:messagebox.showerror("错误",'科学计数法格式不对,右边的输入不应为小数')returnif float(b)>0 :if '.' in a:if float(a.split('.')[1])==0:out=str(float(a)*10).replace('.0','')for i in range(int(float(b))-1):out+='0'else:tempout=a.split('.')out=tempout[0]while True:for i in range(int(float(b))):try:out+=tempout[1][i]except:breakelse:out += '.'for j in range(i + 1, len(tempout[1])):try:out += tempout[1][j]except:breakbreakfor m in range(len(tempout[1]),int(float(b))):out +='0'breakif out[-1] == '.':out=out.replace('.', '')else:out=a+'0'*int(float(b))elif float(b)==0:out=aelse:out='0.'+('0'*int(-float(b)-1)+a).replace('.','')messagebox.showinfo('输出结果',out)

这部分代码比较难懂。

这部分是用来限制输入的内容的:

        a=self.entry1.get()b=self.entry2.get()try:float(a)float(b)except:messagebox.showerror("错误","必须输入数字")returnif len(a)>10:messagebox.showerror('错误','a的数值太离谱啦')returnif float(b)>1000 or float(b)<-1000:messagebox.showerror("错误",'b的数值太离谱啦')returnif float(a)<1 or float(a)>=10:messagebox.showerror('错误','科学计数法格式不对,左边的输入应大于等于1小于10')returnif '.' in b:messagebox.showerror("错误",'科学计数法格式不对,右边的输入不应为小数')return

而后面的代码则分别处理正负号。

最后展示完整代码:

#科学计数法模拟器
from tkinter import *
from tkinter import messagebox
import tkinter as tk
#平时不以科学计数法输出
class basedesk():#底板def __init__(self, master):self.master = masterself.master.title("科学计数法模拟器")self.master.configure(bg='#B1FFF9')self.master.geometry("1000x600")mainwindow(self.master)
class mainwindow():#主界面def __init__(self, master):self.master = masterself.window = tk.Frame(self.master, bg='#e5ffe5')self.window.place(x=0,y=0,width=1000,height=600)self.window.showname_label=tk.Label(self.window,text="科学计数法模拟器",fg='#26734d', bg='#ffe5ff',font=("Helvetic",60,"bold"),relief=RAISED).place(x=0, y=10,width=1000, height=150)self.window.enter_btn=tk.Button(self.window,text="开始",bg='#ffffe5',fg='#333399',font=("Helvetic", 60, "bold"),command=self.changetofunction).place(x=360, y=300,width=250, height=150)def changetofunction(self,):self.window.destroy()functionwindow(self.master)
class functionwindow():def __init__(self, master):self.master = masterself.window = tk.Frame(self.master, bg='#e5f9ff')self.window.place(x=0, y=0, width=1000, height=600)self.window.show_label = tk.Label(self.window, text="x10", font=("Helvetic", 40, "bold"), bg='#e5f9ff').place(x=455, y=180)self.entry1=tk.Entry(self.window, font=("Helvetica", 20))self.entry1.place(x=150, y=200, width=300, height=40)self.entry2 = tk.Entry(self.window, font=("Helvetica", 20))self.entry2.place(x=560, y=160, width=300, height=40)self.window.enter_btn=tk.Button(self.window,text="计算",bg='#ffffe5',fg='#333399',font=("Helvetic", 60, "bold"),command=self.calculate).place(x=360, y=300,width=250, height=150)def calculate(self):a=self.entry1.get()b=self.entry2.get()try:float(a)float(b)except:messagebox.showerror("错误","必须输入数字")returnif len(a)>10:messagebox.showerror('错误','a的数值太离谱啦')returnif float(b)>1000 or float(b)<-1000:messagebox.showerror("错误",'b的数值太离谱啦')returnif float(a)<1 or float(a)>=10:messagebox.showerror('错误','科学计数法格式不对,左边的输入应大于等于1小于10')returnif '.' in b:messagebox.showerror("错误",'科学计数法格式不对,右边的输入不应为小数')returnif float(b)>0 :if '.' in a:if float(a.split('.')[1])==0:out=str(float(a)*10).replace('.0','')for i in range(int(float(b))-1):out+='0'else:tempout=a.split('.')out=tempout[0]while True:for i in range(int(float(b))):try:out+=tempout[1][i]except:breakelse:out += '.'for j in range(i + 1, len(tempout[1])):try:out += tempout[1][j]except:breakbreakfor m in range(len(tempout[1]),int(float(b))):out +='0'breakif out[-1] == '.':out=out.replace('.', '')else:out=a+'0'*int(float(b))elif float(b)==0:out=aelse:out='0.'+('0'*int(-float(b)-1)+a).replace('.','')messagebox.showinfo('输出结果',out)
if __name__ == '__main__':#主函数root = tk.Tk()root.resizable(False, False)basedesk(root)root.mainloop()

【安安教具】-【数学】-【科学计数法】模拟器 教你如何用python制作科学计数法模拟器 python项目小发明相关推荐

  1. 教你如何用python制作平面直角坐标系模拟器 python项目小发明 【安安教具】-【数学】-【平面直角坐标系】模拟器

    平面直角坐标系和之前的数轴模拟器有异曲同工之妙,但是作为一个二维的软件,肯定是要难一些的... [安安教具]-[数学]-[数轴]模拟器 教你如何用python制作数轴模拟器 python 小项目创作_ ...

  2. 教你如何用python制作黑板模拟器 python 项目小发明 【安安教具】-【工具】-【黑板】模拟器

    黑板模拟器是一个多线程控制尝试,需要做到通过tkinter实现对鼠标的控制和监督.鼠标在移动时会有一个线程来检测鼠标的位置,计算窗口的位置,计算出鼠标在窗口中的位置,结合canvas画布实现对黑板的涂 ...

  3. 如何用python制作温度计模拟器 python项目小发明 【安安教具】-【物理】-【温度计】模拟器

    温度计测量水温的过程要满足如下条件: 1.不能碰烧杯底. 2.不能碰烧杯壁. 设计一款动手实践上面过程的软件,就是接下来要完成的~ 我们先看一下效果: 如何用python制作温度计模拟器 python ...

  4. 教你如何用python制作三角形模拟器 python项目小发明 【安安教具】-【数学】-【三角形】模拟器

    三角形的三个点互相连接组成了一个平面图形,我们如何用python制作一个可以展示各种三角形的软件呢? 我们先看看效果: 这个东西要如何使用呢?我们看一下视频: 三角形模拟器 可以看到,控制三角形的三个 ...

  5. 【安安教具】-【数学】-【实数】模拟器 教你如何用python制作实数模拟器 python小项目创作

    哈喽~今天开始分享数学类模拟器,首先展示的是实数模拟器~~~ 主界面: 功能页面如下: 简单来说就是随机生成一个数,然后根据这个数字进行判断选择合适的类别,像上图就是一个无理数,而且是负无理数...因 ...

  6. 【安安教具】-【数学】-【有理数计算】模拟器 教你如何用python制作有理数计算模拟器 python项目小发明 eval函数

    今天教大家用python模拟有理数计算,首先展示功能页面: 啊这?怎么用这个东西呀?我们来看看~ 有理数计算模拟器 哇,功能这么强大?那实现起来一定很难吧??? 其实也没那么难...因为python早 ...

  7. 【安安教具】-【数学】-【数轴】模拟器 教你如何用python制作数轴模拟器 python 小项目创作

    数轴可以用来表示一个数字所处的大致范围,今天我们就来做一个数轴模拟器. 功能页面如下: 这样一个简单的功能在后端逻辑部分花了我好长时间,我们看一下使用效果就明白了... 数轴模拟器 可以看到,输入一个 ...

  8. 教你如何用python制作矩形模拟器 python项目小发明 【安安教具】-【数学】-【矩形】模拟器

    矩形,俗称长方形.满足对边相等且平行,邻边垂直. 这样的定义也成为其实现的难点. 我们来看一下使用效果: 矩形模拟器 矩形模拟器可以通过修改四个角实现对形状的改变,而四个角的锁定也是通过对鼠标位置的跟 ...

  9. 如何用python制作正方形模拟器 python项目小发明 【安安教具】-【数学】-【正方形】模拟器

    正方形,是一种特殊的四边形,与矩形相比,其四个边长度均相等. 正方形的实现也会变得十分困难,我们需要考虑形状不发生变化,只改变其大小. 模拟一个正方形的大小,位置变化,就是本模拟器需要实现的功能. 其 ...

最新文章

  1. 清华大学提出APDrawingGAN,人脸照片秒变艺术肖像画
  2. C 语言的实际运用 ---150809124
  3. SSM整合的Maven项目中引入Bootstrap,三步实现高大上插拔UI,后端也有美感
  4. 01_Struts2概述及环境搭建
  5. 动态规划算法——最长上升子序列
  6. android个推快速集成,个推用户画像产品(个像)Android集成实践
  7. 塞尔达传说gba_【译介】《塞尔达传说:不可思议的帽子》2004年开发者访谈
  8. linux命令详解——sar
  9. 深受企业青睐的华为云
  10. 小程序:uniapp开发和原生开发语法区别
  11. WIN7更改用户名访问共享文件夹
  12. 如何写好工作日报,周报,月报?
  13. Alpha阶段敏捷冲刺⑦
  14. Ubuntu 13.04下安装WPS for Linux
  15. 全球与中国医疗BI软件市场深度研究分析报告
  16. python全栈指的是什么_python全栈指的是什么
  17. C++ Primer Plus读书感悟
  18. Qt之撤销命令视图的使用(QUndoView)
  19. Excel,sumproduct()函数怎么用
  20. Core Animation之多种动画效果

热门文章

  1. php 网址缩短,网址缩短
  2. 一包通刷安卓9 晶晨S905L3/3B
  3. 2022-2023赛季16强欧冠抽签模拟(matlab实现)
  4. 【C#】菜鸟教程学习笔记(一)
  5. “后 Hadoop 时代”,大数据从业者如何应对新技术趋势带来的挑战?
  6. 使用Getdata提取数值
  7. 切换自带驱动usb无线网卡工作模式
  8. 茂名市 2021 年高中信息技术学科素养展评
  9. 互联网海外市场篇之----从这里出发
  10. iis网站搭建http访问的文件服务器