![Python程序设计案例教程:从入门到机器学习(微课版)](https://wfqqreader-1252317822.image.myqcloud.com/cover/597/26793597/b_26793597.jpg)
2.6 案例精选
【例2-22】求50以内能被7整除,但不能同时被5整除的所有整数。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P47_14724.jpg?sign=1739281530-PacO0jpBIWuiZM1AKx7IpIHi6V447EfY-0-f32243d0a566b9c33f18dd6dac493545)
将程序保存为ex2_22.py。
运行程序:
python ex2_22.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P47_14728.jpg?sign=1739281530-GBaAITAyMiABWsyTtY198471Rt93rDhS-0-0581c9d7113dc81a034545568b8dc9e6)
【例2-23】如果一个3位数各位数字的立方和等于该数自身,则该数称为“水仙花数”。例如,153 = 13+53+33,所以153是一个水仙花数。求100~1000所有“水仙花数”。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P47_14734.jpg?sign=1739281530-guwetlufeUudAqE8WYm4qiblAECiOGZW-0-d7e184d395f4f1a5aac4f8a3e099dea2)
将程序保存为ex2_23.py。
运行程序:
python ex2_23.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P47_14735.jpg?sign=1739281530-JmYfTfmjBLHzjjWpcu8wkH7KWmKxo3iw-0-94aee05b8d543bb4e9aaefbca8ed6b6e)
【例2-24】设有一份某地连续10年6月1日的气温记录,其数据为(℃)31、30、33、31、28、32、29、33、35、31,试计算其平均气温。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P48_14738.jpg?sign=1739281530-UhtNmqvO8hb5XNMkNmwrCFMJ737sDpjf-0-2891e1640fb3e126e847b75ac37f626b)
将程序保存为ex2_24.py。
运行程序:
python ex2_24.py
程序运行结果如下:
31
【例2-25】鸡兔同笼问题。鸡和兔在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中鸡和兔各有多少只?
设笼中有x只鸡,有y只兔,则:
x + y = 35 2x + 4y = 94
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P48_14746.jpg?sign=1739281530-aFo20R8FgCtXIJVXAuTTv0NtbxXSmrfG-0-b9db4ce0470150f278adf0bfcdccedb7)
将程序保存为ex2_25.py。
运行程序:
python ex2_25.py
程序的运行结果如下:
兔子有12只,鸡有23只
【例2-26】百钱买百鸡问题。公鸡5文钱一只,母鸡3文钱一只,小鸡3只一文钱,用100文钱买100只鸡,如何买?
设公鸡x只,母鸡y只,小鸡z只,则:
x + y + z = 100 5x + 3y + z/3 =100
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P48_14751.jpg?sign=1739281530-pyVKbrbUv3hIT1hNMuvyTbU25HKjKhUJ-0-d9f5335e461f1250f57e40417d0f502f)
将程序保存为ex2_26.py。
运行程序:
python ex2_26.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P49_14770.jpg?sign=1739281530-G5YvKubEsEZsYWf3GpnrwyCQGj3tkxhY-0-4d8b42f7ddd12a50bf196f0b8af35b84)
【例2-27】老汉卖西瓜,第一天卖西瓜总数的一半多一个,第二天卖剩下的一半多一个,以后每天都是卖前一天剩下的一半多一个,到第10天只剩下一个。求西瓜总数是多少?
算法分析:设共有x个西瓜,卖一半多一个后,还剩下x/2 - 1个,所以,每天的西瓜数可以用迭代表示: xn=(xn+1+1) * 2。且在卖了9天之后(第10天),x = 1。这是可以用循环来处理的迭代问题。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P49_14780.jpg?sign=1739281530-56B5OFT7GB8BI56zbvGf37uOlZfV1QH6-0-be8a30062516d40bf6d661c693937140)
将程序保存为ex2_12.py。
运行程序:
python ex2_12.py
程序运行结果如下:
西瓜总数:x = 1534
【例2-28】for循环语句的应用示例:
(1)使用序列迭代法,显示列表['xyz', 'book', 'hello']。
(2)使用序列索引迭代法,显示列表['c++', 'java', 'python']。
(3)使用数字迭代法,显示5个数字。
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P50_14783.jpg?sign=1739281530-lAcgX5noKe4L6KlTVBof27hDETY6lksL-0-0bdeafbdb382b9aa8c07af7be2c235c6)
将程序保存为ex2_28.py。
运行程序:
python ex2_28.py
程序的运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P50_14787.jpg?sign=1739281530-n90NVOEmPIBByIkHvMo418OUdclTR0j4-0-67e04eebd1e6b2e945ec90ffcae444d3)
【例2-29】编写计算n!的函数。
n!是以递归形式定义的:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P50_14788.jpg?sign=1739281530-EDUH66iW7iKEHoxVtyuC8R1y5ZPswnna-0-7bc7a3202b1d53bd7d94b2b88ac0c11f)
计算n!,应先计算(n - 1)!,而计算(n - 1)!,以需要先计算(n - 2)!……依次递推,直到最后变成计算1!的问题。
根据公式,1! = 1,这是本问题的递归终止条件。由终止条件得到1!的结果后,再反过来依次计算出2!,3!,…,n!。
设计算n!的函数为fun(n),当n>1时,fun(n) = n * fun(n-1)。即在fun(n)函数体内将递归调用fun()自身。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P51_14791.jpg?sign=1739281530-gxAwDnPvCDiOpqFG7115PEUI11MCyrlO-0-3a2e949482e03f23572347200a3c937f)
将程序保存为ex2_29.py。
运行程序:
python ex2_29.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P51_14794.jpg?sign=1739281530-kvCLzKoHcIgqEP0P9QFAjouN317cKGnR-0-e8b9ef6b960d00ade697c9e8b2342ec6)
【例2-30】编写函数,从键盘输入参数n,计算斐波那契数列中第一个大于n的项。
斐波那契数列为1,1,2,3,5,8,13,…。从第3项开始,每一项是前二项之和。
编写程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P51_14796.jpg?sign=1739281530-FcTTsaKrUtP3NhaGNS2vflP1AdvXN8RU-0-9e2cffd24dd581afd47c7216eb32065d)
将程序保存为ex2_30.py。
运行程序:
python ex2_30.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P51_14799.jpg?sign=1739281530-nzQcMY8nP17kW5e4xs2z3BTQ3VMC0Re8-0-aff5f6d6d5b0ac053bb3cbfead5aab78)
【例2-31】应用随机函数random()模拟微信发红包。
使用随机函数random()需要引用random模块。
程序代码如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P52_14809.jpg?sign=1739281530-FSx9C7N6286FF7pILNtSrFDWcINHZvpc-0-55ff2708afc0d99e15cd72618026375c)
将程序保存为ex2_31.py。
运行程序:
python ex2_31.py
程序运行结果如下:
![](https://epubservercos.yuewen.com/0F5810/15253385904109206/epubprivate/OEBPS/Images/Figure-P52_14805.jpg?sign=1739281530-sRtBwfSwHTxlHCB3a3MIiVcCofMbLkbW-0-cb683fbb2af7ff199b8f05d4c898ddb7)