Python实现的计算器功能


本文摘自php中文网,作者不言,侵删。

这篇文章主要介绍了Python实现的计算器功能,涉及Python四则运算、取反、百分比等相关数学运算操作实现技巧,需要的朋友可以参考下

本文实例讲述了Python实现的计算器功能。分享给大家供大家参考,具体如下:

源码:

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

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

# -*- coding:utf-8 -*-

#! python2

from tkinter import *

__author__ = 'tianshl'

__date__ = '2017/10/16'

class Application(Frame):

 def __init__(self):

  Frame.__init__(self)

  self.grid()

  self.mem = ''    # 内存中的数据

  self.opt = ''    # 操作符

  self.display = StringVar() # 显示的数据

  self.display.set('0'# 初始值

  self.need_cls = False  # 是否需要清屏

  self.create_widgets()

 # 清空

 def clear(self):

  self.mem = ''

  self.display.set('0')

 # 取反

 def negative(self):

  self.display.set(eval('-' + self.display.get()))

 # 四则运算

 def option(self, opt):

  if not self.need_cls:

   self.calculate()

  self.opt = opt

  self.need_cls = True

  self.mem = self.display.get()

 # 计算结果

 def calculate(self):

  if self.opt:

   try:

    self.display.set(eval(self.mem + self.opt + self.display.get()))

   except Exception:

    self.display.set('错误')

    self.need_cls = True

   self.opt = ''

   self.mem = ''

 # 百分比

 def percent(self):

  base = float(self.mem or 1) / 100

  display = eval('{}*{}'.format(self.display.get(), base))

  int_display = int(display)

  display = int_display if display == int_display else display

  self.display.set(display)

  self.need_cls = True

 # 输入

 def input(self, key):

  if self.need_cls:

   self.display.set('0')

   self.need_cls = False

  display = self.display.get()

  if display == '0' and key != '.':

   self.display.set(key)

  else:

   if '.' in display and key == '.':

    return

   self.display.set(display + key)

 # 创建组件

 def create_widgets(self):

  # 显示框

  Entry(self, textvariable=self.display, state="readonly", width=35).grid(

   row=0, column=0, columnspan=4)

  # 键盘

  keyboards = [

   ['C', '+/-', '%', '/'],

   ['7', '8', '9', '*'],

   ['4', '5', '6', '-'],

   ['1', '2', '3', '+'],

   ['0', '.', '=']

  ]

  for row, keys in enumerate(keyboards):

   row_num = 3 + row

   for col, key in enumerate(keys):

    if key == 'C':

     command = self.clear

    elif key == '+/-':

     command = self.negative

    elif key == '%':

     command = self.percent

    elif key in ['+', '-', '*', '/']:

     command = lambda s=key: self.option(s)

    elif key == '=':

     command = self.calculate

    else:

     command = lambda s=key: self.input(s)

    bt = Button(self, text=key, command=command, width=6)

    bt.grid(row=row_num, column=col)

app = Application()

# 设置窗口标题:

app.master.title('www.jb51.net - 计算器')

# 设置窗口尺寸/位置

app.master.geometry("326x170+200+200")

# 设置窗口不可变

app.master.resizable(width=False, height=False)

# 主消息循环:

app.mainloop()

运行效果:

相关推荐:

Python实现求解括号匹配问题的方法

python实现百度语音识别api


以上就是Python实现的计算器功能的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

Python中如何搭建虚拟环境?Python搭建虚拟环境的步骤

如何使用Python画曲线图

深入理解上篇之 Python的进程和线程

Python中num是什么意思

Python闭包是什么?Python闭包的简单介绍(附示例)

Python 元类实例解析_Python

Python除了爬虫还可以做什么

如何列出一个目录的所有文件

Python线程下信号量与有边界的信号量的介绍

人工智能为什么用Python

更多相关阅读请进入《Python》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...