栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

个性计算器(可不断加挂功能模块实现个性化)(python实现)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

个性计算器(可不断加挂功能模块实现个性化)(python实现)


Python 官网: https://www.python.org/
  这里,才 python 前沿。可惜是英文原版。所以,我要练习英文阅读。類類

  • 我的CSDN主页
  • My Python 学习个人备忘录
  • 我的HOT
  • 老齐教室

  自学并不是什么神秘的东西,一个人一辈子自学的时间总是比在学校学习的时间长,没有老师的时候总是比有老师的时候多。

            —— 华罗庚


练习:个性计算器

  1. 计算器主界面
  2. 菜单显示
  3. 菜单确认
  4. 简单计算器
  5. 完整代码

  看到大佬博文《【C语言】计算器》,诱发我也想 py 一个。
  设想:我还不会 gui 界面编码,就只能码个程序 print Menus 的了。
  鉴于 python 有 eval() 内置函数,她可以把字符串转化为代码语句并执行,所以“计算器”的简单计算直接输入四则混合运算的式子(数学表达式)就可以了。input() 接收输入字符串,直接调用 eval() 计算输出结果,实现简单的“四则混合运算”。
  对于乘方开方对数三角函数等高级计算,就需加载 python 的 math 的相应方法。还可以做一些个性计算,比如圆周长面积、长方体表面积体积(正方体是特殊的长方体,可以不单列)……可以尽情释放您的思绪。浪浪
  对于写代码样式,我更喜欢函数式编程。当然采用自定义函数编写功能模块了。

  通过一天的“业余”调试,我炼的 python 版“计算器”,基本可以上“笔记”了。珞珞
回首页


计算器主界面

def main():
    '''计算器主执行代码块'''    
    while True: # 菜单列印和确认死循环,不主动退出就一直执行循环。
        menu_show() # 屏幕打印菜单。
        is_menu() # 菜单选择。

回首页


菜单列印

  这次不象以前练习,设计为动态菜单列表。如需添加菜单项,只需把菜单项字符串放在列表相应位置就好。
(注意:增加菜单后,记得到“菜单确认”模块修改 range() 合法菜单选择范围,不然无法选中新增菜单序号。并增添相应的 elif 选项。)

def menu_show():
    '''菜单打印模块,无需参数传递'''
    menus = ('简单计算', '素数查找', '退出') # 这次不象以前练习,设计为动态菜单列表。如需添加菜单项,只需把菜单项字符串放在列表相应位置就好。(注意:增加菜单后,记得到“菜单确认”模块修改 range() 合法菜单选择范围,不然无法选中新增菜单序号。并增添相应的 elif 选项。)
    print(f"nn{color(1, 'f_green')}{'':*^41}n{'星月计算器':^36}n{'(Stars&Moon Calculator)':^42}n{'【':>10}{localtime_show()}】n{'':-^41}{color(0)}")
    for k,i in enumerate(menus): # 遍历枚举函数 enumerate() ,方便列印菜单序号。
        if i != '退出':
            print(f"n{k+1:>16}. {i}")
        else:
            exit_s = f" {0}. {i} "
            print(f"n{'':>13}{exit_s:=^13}")
    print(f"n{color(1, 'f_green')}{'':-^41}n{'Author:Dream-elf_cq':^41}{'(梦幻精灵_cq)':^37}n{'':*^41}{color(0)}")

回首页


菜单确认

def is_menu():
    '''菜单确认'''
    while True:
        try: # 菜单选择错误捕获。
            menu = int(input(f"nn{'菜单选择:':>12}"))
            if menu not in range(3): # 合法菜单选择序号范围设定。
                error_show()
                input(f"n{'错误类型:没有此项菜单!':-^29}")
            break
        except Exception as error:
            error_show() 
            input(f"n错误类型:{error}")
    # 菜单项增加后,就得增加一个 elif 。
    if menu == 0: # 0. 退出
        exit() 
    elif menu == 1: # 1. 简单计算器
        less_count()
    elif menu == 2: # 2. 素数查找
        find_primes()

回首页


简单计算器

  虽言简单计算器,但只要是符合 python 规范的表达式,都能有结果输出。
  这,足见 eval() 之强了吧。浪浪


注意:由于 {}、[ ]在python 中另有定义,所以在本“计算器”中输入计算表达式,{}、[ ] 皆用成对的 () 替代,不影响结果输出(这也符合 python 规范)。所以,我规定了“计算器”的“计算表达式”字符集,超出范围报错重输。

如:

------简单计算器(数学四则混合运算)-------

计算表达式输入:(2*(6-(2+2)))

    结果:4.0000

另:本“计算器”从 python “脱模”而来,所以“计算表达式”“无视”空格的存在(英文空格)。
如:

  虽然三种写法一样,但我建议第一种( python 风格的“标准”写法);千万别写成第三种,虽然也能得相同结果,但看着“别扭”不是。   还可以完成乘方开方等“高级”一点儿的操作。

  计算 3 的平方、16 的平方根、81 的四次方根。(求 n 次方根,不要写成 “16 ** 1/2”、“81 ** 1/4”,那样就成了“16 的一次方除以 2 ”、“81 的一次方除以 4 ”。)

def less_count(): # 虽言简单计算器,但只要是符合 python 规范的表达式,都能有结果输出。这,足见 eval() 之强了吧。浪浪
    s = '''简单计算器(数学四则混合运算)'''
    
    def in_rules():
        '''解析计算表达式合规符号集群'''
        rules = [] # 计算表达式字符规则列表
        rules.extend([str(i) for i in range(10)]) # 10 个数字。
        rules.extend(list(' +-*/()')) # 运算符号。
        rules.extend([chr(i) for i in range(65,91)]) # 英文大写字母。
        rules.extend([chr(i) for i in range(97,123)]) # 英文小写字母。
        return tuple(rules)
        
    #print(f"nn计算表达式合法字符集:n")
    #print(*in_rules()) # * 号打破“容器”(tuple)元素列印。(打印 in_rules 后注释掉了。)
    while True:
        in_s = input(f"nn{s:-^28}nnn{'计算表达式输入:'}")
        if in_s == '':
            return 
        for i in list(in_s):
            if i not in in_rules():
                error_show()
                input(f"n{'错误类型:输入非法字符!':-^29}")
        else:
            break          
    input(f"nn{'结果:':>12}{eval(in_s):.4f}nn{'':*^41}") # 我设定 eval() 函数计算数学表达式结果为四位小数({:.4f}),可自行更改。
    less_count() # 自调用,“另类”替代循环。

回首页


 
 
 

回首页

完整 Python 代码
  我的解题思路,已融入代码注释,博文中就不再赘述。

(如果从语句注释不能清楚作用,请评论区留言指教和探讨。欄)

 

回首页

上一篇: 求偶数和、阈值分割和求差( list 对象的两个基础小题 )

下一篇: 练习:班里有人和我同生日难吗?(概率probability、蒙特卡洛随机模拟法)


我的HOT博:
  • 用 pandas 解一道小题(1914阅读)
  • 可迭代对象和四个函数(1042阅读)
  • “快乐数”判断(1201阅读)
  • 罗马数字转换器(构造元素取模)(1894阅读)
  • 罗马数字(转换器|罗生成器)(2546阅读)
  • Hot:让QQ群昵称色变的代码(16354阅读)
  • 斐波那契数列(递归| for )(3288阅读)
  • 柱状图中最大矩形(1623阅读)
  • 排序数组元素的重复起止(1215阅读)
  • 电话拨号键盘字母组合(1277阅读)
  • 密码强度检测器(1736阅读)
  • 求列表平衡点(1787阅读)
  • Hot: 字符串统计(3528阅读)
  • Hot:尼姆游戏(聪明版首发)(3334阅读)尼姆游戏(优化版)(902阅读)
推荐条件 点阅破千

回首页


精品文章:
  • 好文力荐:《python 完全自学教程》齐伟书稿免费连载
  • OPP三大特性:封装中的property
  • 通过内置对象理解python'
  • 正则表达式
  • python中“*”的作用
  • Python 完全自学手册
  • 海象运算符
  • Python中的 `!=`与`is not`不同
  • 学习编程的正确方法

来源:老齐教室


回首页

Python 入门指南【Python 3.6.3】
好文力荐:
  • 【8大编程语言的适用领域】先别着急选语言学编程,先看它们能干嘛
  • 靠谱程序员的好习惯

CSDN实用技巧博文:
  • 8个好用到爆的Python实用技巧
  • python忽略警告

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/835525.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号