Python双版本计算器详解

 更新时间:2021年04月19日 14:19:04   作者:啥也不是:)  
这篇文章主要介绍了如何用Python制作计算器,文章中有两个版本,代码详细,适合绝大部分朋友,如果你对python如何制作计算器有兴趣,可以参考下这篇文章

有框计算器

这个计算器我们用到了Python自带的Tkinter库

# 导入tkinter库
import tkinter

我们要对窗口进行一些基本操作

# 获取一个窗口
window = tkinter.Tk()
# 设置标题
window.title('计算器')
# 设置窗口大小
window.geometry('200x200')

接着用函数定义一个输入方法

输入方法

# 输入方法
def add(n):
    # 获取到n1文本框的值
    n1 = inp.get()
    # 清空文本框
    inp.delete(0,len(n1))
    # 插入原来的加上新输入参数n
    inp.insert(0,n1+str(n))

再用函数定义一个计算方法

计算方法

# 执行计算方法
def calc():
    n1 = inp.get()  
    inp.delete(0,len(n1))
    # 把文本框的字符串用eval当代码执行一次,再插入到文本框
    inp.insert(0,str(eval(n1)))

完成后还需要把文本框给清除,我们还是用函数

清除文本框方法

# 清空文本框
def clear():
    n1 = inp.get()  
    inp.delete(0,len(n1))

清空文本框后还会留下一个字符,我们需要删除最后一个字符,仍然用函数

删除最后一个字符方法

# 删除最后一个字符
def back():
    n1 = inp.get()  
    inp.delete(len(n1)-1,len(n1))

接着我们计算绝对值

计算绝对值

# 计算绝对值
def ab():
    n1 = inp.get()  
    inp.delete(0,len(n1))
    inp.insert(0,str(eval(n1)*-1))

设置一些文本框作为按钮的一部分

设置文本框

# 设置一个文本框
inp = tkinter.Entry(window, width=25)
# 在第0行,第0个,合并5列
inp.grid(row=0,column=0,columnspan=5)

再制作一些功能按钮

功能按钮

# 删除按钮(窗口,宽度,文本,执行命令).grid(1行,0列)
tkinter.Button(window,width=5, text="C", command=clear).grid(row=1,column=0)
tkinter.Button(window,width=5, text="←", command=back).grid(row=1,column=1)
tkinter.Button(window,width=5, text="+/-", command=ab).grid(row=1,column=2)

再制作运算符按钮

运算符

# 删除按钮(窗口,宽度,文本,背景色,文本颜色,执行命令并传入参数).grid(1行,4列)
tkinter.Button(window,width=5, text="+",bg="#f70",fg="#fff",command=lambda:add("+")).grid(row=1,column=4)
tkinter.Button(window,width=5, text="-", bg="#f70",fg="#fff",command=lambda:add("-")).grid(row=2,column=4)
tkinter.Button(window,width=5, text="×",bg="#f70",fg="#fff",command=lambda:add("*")).grid(row=3,column=4)
tkinter.Button(window,width=5, text="÷",bg="#f70",fg="#fff",command=lambda:add("/")).grid(row=4,column=4)
tkinter.Button(window,width=12,text="0", command=lambda:add("0")).grid(row=5,column=0,columnspan=2)
tkinter.Button(window,width=5,text="=", bg="#f70",fg="#fff",command=calc).grid(row=5,column=4)
tkinter.Button(window,width=5, text=".", command=lambda:add(".")).grid(row=5,column=2)

最后,我们发现还没有 123 456 789 9个按钮,我们就用for循环创建

把代码加到

# 设置一个文本框
inp = tkinter.Entry(window, width=25)
# 在第0行,第0个,合并5列
inp.grid(row=0,column=0,columnspan=5)

的下面

9个按钮

# 设置一个文本框
inp = tkinter.Entry(window, width=25)
# 在第0行,第0个,合并5列
inp.grid(row=0,column=0,columnspan=5)
# 用for循环 创建 123 456 789 9个按钮
for i in range(0,3):
    for j in range(1,4):
      n = j+i*3
      btn=tkinter.Button(window, text=str(j+i*3),width=5, command=lambda n=n:add(n))
      btn.grid(row=i+2,column=j-1)

一个有框的计算器就做好了,完整代码请看文章末尾

命令行计算器

这个计算器的代码很短,很快就能学会

首先获取第一个数与第二个数

获取数

# 通过用户输入获取运算的第一个数
num1 = int(input("输入第一个数字: "))
# 通过用户输入获取运算的第二个数
# 默认是字符串需要用int把字符转换为数组
num2 = int(input("输入第二个数字: "))
# 提示用户输入运算符

我们还得添加while True来保证代码重复执行,否则计算器无法运算多次

在前面加上while True

while True:
	# 通过用户输入获取运算的第一个数
	num1 = int(input("输入第一个数字: "))
	# 通过用户输入获取运算的第二个数
	# 默认是字符串需要用int把字符转换为数组
	num2 = int(input("输入第二个数字: "))
	# 提示用户输入运算符

这样就能重复了

接着获取运算方法

运算方法

print("输入运算:1、相加;2、相减;3、相乘;4、相除")
# 获取用户输入的运算符号
choice = input("输入你的选择(1/2/3/4):")

接着判断加法

判断加法

# 如果是1
if choice == '1':
	print(num1,"+",num2,"=", num1+num2)

减法、乘法、除法和加法差不多,你们可以自己试试

分割
分割

实在不会也可以看看我的

剩下的

# 如果2
	elif choice == '2':
		print(num1,"-",num2,"=", num1-num2) 
	elif choice == '3':
		print(num1,"×",num2,"=", num1*num2) 
	elif choice == '4':
		print(num1,"÷",num2,"=", num1/num2)

再把他们桥接到加法的下面

桥接

while True:
	# 通过用户输入获取运算的第一个数
	num1 = int(input("输入第一个数字: "))
	# 通过用户输入获取运算的第二个数
	# 默认是字符串需要用int把字符转换为数组
	num2 = int(input("输入第二个数字: "))
	# 提示用户输入运算符
	print("输入运算:1、相加;2、相减;3、相乘;4、相除")
	# 获取用户输入的运算符号
	choice = input("输入你的选择(1/2/3/4):")
	# 如果是1
	if choice == '1':
		print(num1,"+",num2,"=", num1+num2)
	# 如果2
	elif choice == '2':
		print(num1,"-",num2,"=", num1-num2) 
	elif choice == '3':
		print(num1,"×",num2,"=", num1*num2) 
	elif choice == '4':
		print(num1,"÷",num2,"=", num1/num2)

算法部分就好了,我们还需要加一个else,否则输出将会出错

else

# 其他都是非法的
else:
	print("非法输入")

最后的最后我们把else加到上面一部分的下面

桥接2

while True:
	# 通过用户输入获取运算的第一个数
	num1 = int(input("输入第一个数字: "))
	# 通过用户输入获取运算的第二个数
	# 默认是字符串需要用int把字符转换为数组
	num2 = int(input("输入第二个数字: "))
	# 提示用户输入运算符
	print("输入运算:1、相加;2、相减;3、相乘;4、相除")
	# 获取用户输入的运算符号
	choice = input("输入你的选择(1/2/3/4):")
	# 如果是1
	if choice == '1':
		print(num1,"+",num2,"=", num1+num2)
	# 如果2
	elif choice == '2':
		print(num1,"-",num2,"=", num1-num2) 
	elif choice == '3':
		print(num1,"×",num2,"=", num1*num2) 
	elif choice == '4':
		print(num1,"÷",num2,"=", num1/num2)
	# 其他都是非法的
	else:
		print("非法输入")

两个计算器都介绍完毕了,接下来是完整代码

完整代码

有框计算器

# 导入tkinter库
import tkinter
# 获取一个窗口
window = tkinter.Tk()
# 设置标题
window.title('计算器')
# 设置窗口大小
window.geometry('200x200')
# 输入方法
def add(n):
    # 获取到n1文本框的值
    n1 = inp.get()
    # 清空文本框
    inp.delete(0,len(n1))
    # 插入原来的加上新输入参数n
    inp.insert(0,n1+str(n))
# 执行计算方法
def calc():
    n1 = inp.get()  
    inp.delete(0,len(n1))
    # 把文本框的字符串用eval当代码执行一次,再插入到文本框
    inp.insert(0,str(eval(n1)))
# 清空文本框
def clear():
    n1 = inp.get()  
    inp.delete(0,len(n1))
# 删除最后一个字符
def back():
    n1 = inp.get()  
    inp.delete(len(n1)-1,len(n1))
# 计算绝对值
def ab():
    n1 = inp.get()  
    inp.delete(0,len(n1))
    inp.insert(0,str(eval(n1)*-1))
# 设置一个文本框
inp = tkinter.Entry(window, width=25)
# 在第0行,第0个,合并5列
inp.grid(row=0,column=0,columnspan=5)
# 用for循环 创建 123 456 789 9个按钮
for i in range(0,3):
    for j in range(1,4):
      n = j+i*3
      btn=tkinter.Button(window, text=str(j+i*3),width=5, command=lambda n=n:add(n))
      btn.grid(row=i+2,column=j-1)
# 删除按钮(窗口,宽度,文本,执行命令).grid(1行,0列)
tkinter.Button(window,width=5, text="C", command=clear).grid(row=1,column=0)
tkinter.Button(window,width=5, text="←", command=back).grid(row=1,column=1)
tkinter.Button(window,width=5, text="+/-", command=ab).grid(row=1,column=2)
# 删除按钮(窗口,宽度,文本,背景色,文本颜色,执行命令并传入参数).grid(1行,4列)
tkinter.Button(window,width=5, text="+",bg="#f70",fg="#fff",command=lambda:add("+")).grid(row=1,column=4)
tkinter.Button(window,width=5, text="-", bg="#f70",fg="#fff",command=lambda:add("-")).grid(row=2,column=4)
tkinter.Button(window,width=5, text="×",bg="#f70",fg="#fff",command=lambda:add("*")).grid(row=3,column=4)
tkinter.Button(window,width=5, text="÷",bg="#f70",fg="#fff",command=lambda:add("/")).grid(row=4,column=4)
tkinter.Button(window,width=12,text="0", command=lambda:add("0")).grid(row=5,column=0,columnspan=2)
tkinter.Button(window,width=5,text="=", bg="#f70",fg="#fff",command=calc).grid(row=5,column=4)
tkinter.Button(window,width=5, text=".", command=lambda:add(".")).grid(row=5,column=2)
# 进入消息循环
window.mainloop()

命令行计算器

while True:
	# 通过用户输入获取运算的第一个数
	num1 = int(input("输入第一个数字: "))
	# 通过用户输入获取运算的第二个数
	# 默认是字符串需要用int把字符转换为数组
	num2 = int(input("输入第二个数字: "))
	# 提示用户输入运算符
	print("输入运算:1、相加;2、相减;3、相乘;4、相除")
	# 获取用户输入的运算符号
	choice = input("输入你的选择(1/2/3/4):")
	# 如果是1
	if choice == '1':
		print(num1,"+",num2,"=", num1+num2)
	# 如果2
	elif choice == '2':
		print(num1,"-",num2,"=", num1-num2) 
	elif choice == '3':
		print(num1,"×",num2,"=", num1*num2) 
	elif choice == '4':
		print(num1,"÷",num2,"=", num1/num2)
	# 其他都是非法的
	else:
		print("非法输入")

到此这篇关于Python双版本计算器详解的文章就介绍到这了,希望对大家有帮助,更多相关python内容请搜索脚本之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持脚本之家!

相关文章

  • Python+Pygame实战之炫舞小游戏的实现

    Python+Pygame实战之炫舞小游戏的实现

    提到QQ炫舞,可能很多人想到的第一个词是“青春”。恍然间,这个承载了无数人回忆与时光的游戏品牌,已经走到了第十几个年头。今天小编就来给大家尝试做一款简单的简陋版的小游戏——《舞动青春*炫舞》,感兴趣的可以了解一下
    2022-12-12
  • numpy.reshape(-1,1)的具体使用

    numpy.reshape(-1,1)的具体使用

    本文主要介绍了numpy.reshape(-1,1)的具体使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • python调用百度语音识别api

    python调用百度语音识别api

    这篇文章主要介绍了python调用百度语音识别api,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-08-08
  • python TKinter获取文本框内容的方法

    python TKinter获取文本框内容的方法

    今天小编就为大家分享一篇python TKinter获取文本框内容的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Python的函数使用详解

    Python的函数使用详解

    大家好,本篇文章主要讲的是Python的函数使用详解,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • 详解Python利用APScheduler框架实现定时任务

    详解Python利用APScheduler框架实现定时任务

    在做一些python工具的时候,常常会碰到定时器问题,总觉着使用threading.timer或者schedule模块非常不优雅。所以本文将利用APScheduler框架实现定时任务,需要的可以参考一下
    2022-03-03
  • Python实现爬取网页中动态加载的数据

    Python实现爬取网页中动态加载的数据

    这篇文章主要介绍了Python实现爬取网页中动态加载的数据,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • 解决vscode python print 输出窗口中文乱码的问题

    解决vscode python print 输出窗口中文乱码的问题

    今天小编就为大家分享一篇解决vscode python print 输出窗口中文乱码的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • 在python中调用C/C++的三种方法

    在python中调用C/C++的三种方法

    这篇文章主要给大家介绍了关于在python中调用C/C++的三种方法,Python可以通过调用C/C++接口来实现与C/C++语言的交互,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-02-02
  • Win10 安装PyCharm2019.1.1(图文教程)

    Win10 安装PyCharm2019.1.1(图文教程)

    这篇文章主要介绍了Win10 安装PyCharm2019.1.1(图文教程),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09

最新评论