Python 编程1000例(3):快算游戏和数字四则运算器

本系列文章通过 1000(一篇文章表示 1 个实例) 个实例 ,为读者提供较为详细的练习题目,以便读者举一反三,深度学习。本系列的文章涉及到 Python 知识点包括:Python 语言基础、运算符和表达式、语句和程序结构、列表和元组、字典和集合、字符串、正则表达式、函数、面向对象编程、模块和包、异常处理和程序调试、文件和目录操作、数据库编程、界面编程、网络编程、WEB 编程、进程和线程、网络爬虫、游戏编程等知识点,由易到难,由浅入深,一步步打下坚实的编程基础。

本系列文章涉及的算法包括搜索、回溯、递归、排序、迭代、贪心、分治和动态规划等,涉及的数据结构包括字符串、列表、指针、区间、队列、矩阵、堆栈、链表、哈希表、线段树、二叉树、二叉搜索树和图结构等。

本系列文章是笔者为适应当前教育改革的创新要求,更好地践行语言类课程,满足实践教学与创新能力培养的需要,阅读大量书籍、各大互联网公司的面试算法、LintCode、LeetCode、九章算法和结合笔者近几年项目经验编写的系列文章,精选了 1000 个趣味性、实用性强的应用实例,从不同难度、不同算法、不同类型和不同数据结构等方面,将实际算法进行总结,希望为 Python 编程人员抛砖引玉。由于笔者经验与水平有限,博文中疏漏及不妥之处在所难免,衷心地希望各位读者在评论区多提宝贵意见及具体的修改建议,以便笔者进一步修改和完善。

一、快算游戏

需求:设计一个简单的加法计算器,实现 100(可以是小数) 以内快速求和运算。程序运行效果如下图所示:

知识点:Python 算术运算,算术运算又称为四则运算,是对两个操作数执行加、减、乘、除等的计算。在 Python 中,算术运算符共计 7 个,包括加(+)、减(-)、乘(*)、除(/)、求余(%)、求整(//)、求幂(**),如下表所示:

运 算 符 描 述 示 例
+ 两个对象相加 7 + 2 # 返回 9
“7” + “2” # 返回 "72"
True + 1 # 返回 2
[1, 2] + [“a”, “b”] # 返回 [1, 2, “a”, “b”]
(1, 2) + (“a”, “b”) # 返回 (1, 2, “a”, “b”)
- 两个数相减 7 - 2 # 返回 5
7 - True # 返回 6
7 - False # 返回 7
* 两个数相乘 或者 返回一个被重复若干次的字符串 7 * 2 # 返回 14
"7" * 3 # 返回 “777”
/ 两个数相除 7 / 2 # 返回 3.5
% 取模运算,返回除法的余数 7 % 2 # 返回 1
** 幂运算,返回 x 的 y 次幂 7 ** 2 # 返回 49
// 取整数运算,返回商的整数部分(向下取整) 7 // 2 # 返回 3

注意:

  1. 使用 /、//、% 运算符时,右侧操作数不能为 0 , 否则 Python 将抛出异常。
    在这里插入图片描述
  2. 加号运算符不仅可以执行数字的相加操作,而且也可以执行字符串连接、对象合并操作等。

拓展:在 Python 中,浮点数运算经常会出现如下情况。
在这里插入图片描述
原因分析:浮点数在计算机实际是以二进制保存的,有些数不精确。例如,0.1 是十进制,转换为二进制后就是一个无限循环的数。

0.0001100110011001100110011001100110011001100110011001100

而 Python 是以双精度(64位)来保存浮点数,多余的位数会被截掉,对浮点数 0.1 来说,在计算机上实际保存的已不是精确的 0.1,所以直接使用 0.1 参与运算后,结果就有可能出现误差。在某些对精度要求比较高的行业,例如金融行业就需要尽可能地降低误差,提高精度。在 Python 中,可以通过下面两种方法获取特定位数精度制。

(1) 使用 round() 函数。例如:
在这里插入图片描述
(2) 使用 Python 提供的 decimal 模块,将浮点数先转换为字符串,再进行运算。
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:5.快算游戏.py
@time:2021/01/18
"""

print("100(可以是小数)以内快速求和运算:")
flag = True  # 开关,控制游戏是否继续
while flag:  # 默认可以无限次玩
    # strip()表示去除用户录入数据左右两侧的空白
    num1 = float(input("数字1: ").strip())  # 输入num1
    num2 = float(input("数字2: ").strip())  # 输入num2
    if num1 > 100 or num2 > 100:  # 判断输入有效性
        print("咋们不玩大的,就玩100以内的数字,请重新输入!")
        flag = True  # 继续游戏 ==> continue
    else:
        result = round(num1 + num2, 2)  # 计算和
        print(f"{num1:.2f} + {num2:.2f} = {result}")  # 输出计算结果
        print("是否退出?退出请按Q键,否则,按其他键继续")
        esc = input()
        if esc == 'Q':  # 如果按下Q(大写),则退出游戏,否则继续
            flag = False  # 退出循环,退出游戏 ==> break

总结:在上面案例代码中,通过无限循环设计重复性游戏结构,然后通过键盘指令,由用户来决定是否终止游戏。在求和运算中,使用 round(num1 + num2, 2) 将浮点数求和运算结果的精确度控制在两位小数,输出显示时,也通过 :.2f 控制两位有效小数的浮点数显示。

二、数字四则运算器

需求:设计一个简单的四则运算器,允许用户输入两个数字和四则运算符,然后返回运算结果。程序运行效果如下图所示:
在这里插入图片描述
示例代码如下:

# -*- coding: UTF-8 -*-
"""
@author:AmoXiang
@file:6.数字四则运算器.py
@time:2021/01/18
"""

while True:  # 无限循环计算
    x = int(input("number1>>: ").strip())  # 输入第1个数字
    o = input("[+ - * /]: ")  # 输入运算符
    y = int(input("number2>>: ").strip())  # 输入第2个数字
    operator = {
    
    "+": x + y,
                "-": x - y,
                "*": x * y,
                "/": x / y}  # 字典结构,根据输入的运算符返回不同运算结果
    result = operator.get(o, "输入运算符 + - * /")  # 根据用户输入的运算符执行运算
    print("result: %d" % result)  # 显示输出结果
    print()  # 输出空行
    # 统一去除空白并将用户输入的一律转为小写
    Continue = input("是否继续?y(Y)/n(N): ").strip().lower()  # 是否继续
    if Continue == "y":  # # 如果输入字符y,则继续
        print()  # 输出空行
        continue  # 返回继续
    elif Continue == "n":  # 如果输入字符n,则跳出循环
        break
    else:
        print("输入错误")  # 输入其他字符,则提示输入错误

总结:在上面代码中,首先 operator 变量引用一个字典对象,它包含 4 个元素,然后调用字典对象的 get() 方法,返回用户输入四则运算表达式,并计算表达式的值,如果用户输入的字符不匹配字典的键,则返回默认值,即返回字符串 输入运算符 + - * /

感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!


在这里插入图片描述

    好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
    如果我的博客对你有帮助、如果你喜欢我的博客内容,请 点赞评论收藏 一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
 编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了 关注 我哦!

猜你喜欢

转载自blog.csdn.net/xw1680/article/details/112783418
今日推荐