1.6 多个例子实战Python编程
本节通过几个实用的例子来复习Python语法。
1.6.1 实战1:九九乘法表
本例技术点:打印小学乘法口诀表(练习for循环、字符串格式化)。
我们看到的九九乘法口诀表一般如图1.33所示。
图1.33 九九乘法口诀表
第一步:定义乘数x,即每一行中不变的那个数;定义被乘数y,即每一行的乘以乘数x,依次递增1,但不超过x的数。
第二步:print被乘数、乘数、积的相关信息,当乘数增加1时,输出一个换行。
第三步:格式化输出最大长度为6的字符串,右补空格,以显示整齐。
代码如下(example_99.py):
保存为99.py,在命令窗口输入python example_99.py,运行结果如图1.34所示。
图1.34 运行结果
1.6.2 实战2:发放奖金的梯度
企业发放的奖金根据利润提成,利润(I)低于或等于10万元时,奖金可提10%;利润高于10万元低于20万元时,低于10万元的部分按10%提成,高于10万元的部分可提成7.5%;20万元到40万元之间时,高于20万元的部分可提成5%;40万元到60万元之间时,高于40万元的部分可提成3%;60万元到100万元之间时,高于60万元的部分可提成1.5%;高于100万元时,超过100万元的部分按1%提成。计算给定的利润I,应发奖金总数。
本例技术点:利用数组(列表)来分界和定位。
代码如下(reward_demo.py):
执行python reward_demo.py依次输入利润数据,结果如图1.35所示。
图1.35 运行结果
通过本例,我们可以练习Python的输入输出、列表的运用、continue的作用、列表推导式等。
1.6.3 实战3:递归获取目录下文件的修改时间
列出某一文件目录下的所有文件(包括其子目录文件),打印修改时间,距当前时间有几天几时几分。
本例技术点:使用标准库os模块的os.walk方法,使用datetime模拟计算时间差。
代码如下:
将上述代码保存为example_fileModifiedTime.py,在命令窗口执行python example_fileModifiedTime.py,运行结果如图1.36所示。
图1.36 运行结果
本例稍做修改可以用于运维自动删除N天前的文件,读者可自行实践。
1.6.4 实战4:两行代码查找替换3或5的倍数
列出1~20的数字,若是3的倍数就用apple代替,若是5的倍数就用orange代替,若既是3的倍数又是5的倍数,就用appleorange代替。注意,只能使用两行代码。
本例技术点:若是一般的思路,则肯定是一个for循环,再加上if else等操作。本例的目的是练习使用字符串的切片操作,代码及运行结果如图1.37所示。
图1.37 两行代码实现
其实算法很简单,就是i对3和5取余,如果为0,则从下标0*5=0开始切片,就取到了apple;如果余数不为0,则最小是从下标1*5=5开始切片,就取到字符串为空。即“apple”[5:]的结果为空。最后使用了or关键字,print(A or B)的含义:如果A为True,则结果为True;当A是False再判断B,如果B是True,则结果是True。
1.6.5 实战5:一行代码的实现
本例要求使用一行代码就实现实例4的运行结果。
本例技术点:学习使用列表推导式及字符串与列表的join操作。
代码及运行结果如图1.38所示。
图1.38 一行代码实现