Python双版本计算器详解

作者:啥也不是:) 时间:2021-03-27 13:22:24 

有框计算器

这个计算器我们用到了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("非法输入")

来源:https://blog.csdn.net/tanclyyy/article/details/115788085

标签:Python,计算器
0
投稿

猜你喜欢

  • Web 开发中遇到的UTF-8编码的问题总结第1/2页

    2023-06-09 05:02:10
  • Mysql InnoDB聚簇索引二级索引联合索引特点

    2024-01-26 23:02:55
  • Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)

    2024-04-10 13:53:57
  • Python实现Youku视频批量下载功能

    2022-08-14 21:16:45
  • Python实现统计给定列表中指定数字出现次数的方法

    2023-02-04 09:50:29
  • Bootstrap基本插件学习笔记之轮播幻灯片(23)

    2024-04-19 10:13:30
  • windows下python和pip安装教程

    2022-04-07 13:00:44
  • MySQL8.0的WITH查询详情

    2024-01-24 16:43:16
  • js数组与字符串的相互转换方法

    2023-06-24 09:41:48
  • ASP图片分页代码 (通用)

    2009-06-22 12:57:00
  • asp 横排显示数据

    2011-03-10 10:50:00
  • python3基于OpenCV实现证件照背景替换

    2022-06-08 02:16:53
  • GO必知必会的常见面试题汇总

    2023-07-14 01:47:07
  • CSS实现HTML元素透明的那些事

    2010-02-01 12:34:00
  • PHP结构型模式之代理模式

    2023-05-25 06:55:34
  • 解析zend studio中直接导入svn中的项目的方法步骤

    2023-09-05 02:21:01
  • python连接mysql并提交mysql事务示例

    2024-01-15 04:43:37
  • python 与GO中操作slice,list的方式实例代码

    2022-08-15 08:48:06
  • Python 类的继承实例详解

    2021-04-30 15:54:09
  • Python的logging模块基本用法

    2021-01-06 07:39:52
  • asp之家 网络编程 m.aspxhome.com