有框计算器
这个计算器我们用到了Python自带的Tkinter库
1
2
|
# 导入tkinter库
import tkinter
|
我们要对窗口进行一些基本操作
1
2
3
4
5
6
|
# 获取一个窗口
window = tkinter.Tk()
# 设置标题
window.title( '计算器' )
# 设置窗口大小
window.geometry( '200x200' )
|
接着用函数定义一个输入方法
输入方法
1
2
3
4
5
6
7
8
|
# 输入方法
def add(n):
# 获取到n1文本框的值
n1 = inp.get()
# 清空文本框
inp.delete( 0 , len (n1))
# 插入原来的加上新输入参数n
inp.insert( 0 ,n1 + str (n))
|
再用函数定义一个计算方法
计算方法
1
2
3
4
5
6
|
# 执行计算方法
def calc():
n1 = inp.get()
inp.delete( 0 , len (n1))
# 把文本框的字符串用eval当代码执行一次,再插入到文本框
inp.insert( 0 , str ( eval (n1)))
|
完成后还需要把文本框给清除,我们还是用函数
清除文本框方法
1
2
3
4
|
# 清空文本框
def clear():
n1 = inp.get()
inp.delete( 0 , len (n1))
|
清空文本框后还会留下一个字符,我们需要删除最后一个字符,仍然用函数
删除最后一个字符方法
1
2
3
4
|
# 删除最后一个字符
def back():
n1 = inp.get()
inp.delete( len (n1) - 1 , len (n1))
|
接着我们计算绝对值
计算绝对值
1
2
3
4
5
|
# 计算绝对值
def ab():
n1 = inp.get()
inp.delete( 0 , len (n1))
inp.insert( 0 , str ( eval (n1) * - 1 ))
|
设置一些文本框作为按钮的一部分
设置文本框
1
2
3
4
|
# 设置一个文本框
inp = tkinter.Entry(window, width = 25 )
# 在第0行,第0个,合并5列
inp.grid(row = 0 ,column = 0 ,columnspan = 5 )
|
再制作一些功能按钮
功能按钮
1
2
3
4
|
# 删除按钮(窗口,宽度,文本,执行命令).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 )
|
再制作运算符按钮
运算符
1
2
3
4
5
6
7
8
|
# 删除按钮(窗口,宽度,文本,背景色,文本颜色,执行命令并传入参数).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循环创建
把代码加到
1
2
3
4
|
# 设置一个文本框
inp = tkinter.Entry(window, width = 25 )
# 在第0行,第0个,合并5列
inp.grid(row = 0 ,column = 0 ,columnspan = 5 )
|
的下面
9个按钮
1
2
3
4
5
6
7
8
9
10
|
# 设置一个文本框
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 )
|
一个有框的计算器就做好了,完整代码请看文章末尾
命令行计算器
这个计算器的代码很短,很快就能学会
首先获取第一个数与第二个数
获取数
1
2
3
4
5
6
|
# 通过用户输入获取运算的第一个数
num1 = int ( input ( "输入第一个数字: " ))
# 通过用户输入获取运算的第二个数
# 默认是字符串需要用int把字符转换为数组
num2 = int ( input ( "输入第二个数字: " ))
# 提示用户输入运算符
|
我们还得添加while True来保证代码重复执行,否则计算器无法运算多次
在前面加上while True
1
2
3
4
5
6
7
|
while True :
# 通过用户输入获取运算的第一个数
num1 = int ( input ( "输入第一个数字: " ))
# 通过用户输入获取运算的第二个数
# 默认是字符串需要用int把字符转换为数组
num2 = int ( input ( "输入第二个数字: " ))
# 提示用户输入运算符
|
这样就能重复了
接着获取运算方法
运算方法
1
2
3
|
print ( "输入运算:1、相加;2、相减;3、相乘;4、相除" )
# 获取用户输入的运算符号
choice = input ( "输入你的选择(1/2/3/4):" )
|
接着判断加法
判断加法
1
2
3
|
# 如果是1
if choice = = '1' :
print (num1, "+" ,num2, "=" , num1 + num2)
|
减法、乘法、除法和加法差不多,你们可以自己试试
1
2
|
分割
分割
|
实在不会也可以看看我的
剩下的
1
2
3
4
5
6
7
|
# 如果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)
|
再把他们桥接到加法的下面
桥接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
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
1
2
3
|
# 其他都是非法的
else :
print ( "非法输入" )
|
最后的最后我们把else加到上面一部分的下面
桥接2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
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 ( "非法输入" )
|
两个计算器都介绍完毕了,接下来是完整代码
完整代码
有框计算器
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
|
# 导入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()
|
命令行计算器
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
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 ( "非法输入" )
<br type = "_moz" >
|
到此这篇关于Python双版本计算器详解的文章就介绍到这了,希望对大家有帮助,更多相关python内容请搜索服务器之家以前的文章或继续浏览下面的相关文章,希望大家以后多多支持服务器之家!
原文链接:https://blog.csdn.net/tanclyyy/article/details/115788085