本系列文章通过 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 |
注意:
- 使用
/、//、%
运算符时,右侧操作数不能为 0 , 否则 Python 将抛出异常。
- 加号运算符不仅可以执行数字的相加操作,而且也可以执行字符串连接、对象合并操作等。
拓展:在 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() 方法,返回用户输入四则运算表达式,并计算表达式的值,如果用户输入的字符不匹配字典的键,则返回默认值,即返回字符串 输入运算符 + - * /
。
感谢您阅读本篇博文,希望本文能成为您编程路上的领航者。祝您阅读愉快!
好书不厌读百回,熟读课思子自知。而我想要成为全场最靓的仔,就必须坚持通过学习来获取更多知识,用知识改变命运,用博客见证成长,用行动证明我在努力。
如果我的博客对你有帮助、如果你喜欢我的博客内容,请点赞
、评论
、收藏
一键三连哦!听说点赞的人运气不会太差,每一天都会元气满满呦!如果实在要白嫖的话,那祝你开心每一天,欢迎常来我博客看看。
编码不易,大家的支持就是我坚持下去的动力。点赞后不要忘了关注
我哦!