内容正文:
项目七:简单数值数据计算
(第3课时 经典算法——枚举法)
活动一:了解嵌套循环
请大家在交互模式(shell)窗口输入下图中的程序,体会嵌套循环结构的运行。
说明:print()函数的“end”参数指定了print()函数在打印完内容之后,用什么符号来表示结尾,默认值是“
”(表示换行),若省略end参数,则表示以默认值换行结尾,如果加上end参数则以参数内设置的字符结尾,例如本例中print(x,end=” ”)表示输出x后以end参数中的空格结尾。
该程序使用了两个循环,他们是嵌套的关系。
所谓嵌套循环就是一个外循环的主体部分是一个内循环。外循环可以包含多个内循环。
该程序段中,外循环循环体共执行( )次,外循环循环体每执行一次,内循环的循环体执行( )次,整个程序一共迭代了( )次。提示:在嵌套循环中,迭代次数将等于外循环中的迭代次数乘以内循环中的迭代次数。在外循环的每次迭代中,内循环执行其所有迭代。
活动二:打直角三角形
方法一: 方法二: 结果
以可编辑的方式打开E:\必修1\项目七-第三课时\高一*班\打直角三角形.py 将上图中的大直角三角形的程序写入该文档,并调试运行至结果正确。
活动三:利用枚举法求解问题
枚举法在生活中非常普遍,是处理问题最常见的算法思想之一。枚举法的基本原理是根据已知的条件,在给定的范围内对所有可能的答案按某种顺序逐一枚举和检验,从中找到那些符合要求的答案。枚举法经常会用到嵌套循环。
枚举法的一般模式可以总结如下:
1. 确定范围:问题所涉及的情况有哪些,情况的种数是否可以确定。
2. 验证条件:分析出来的这些情况,须满足什么条件才能成为问题的答案。
3. 尽可能缩小搜索范围,减少求解时间。
案例1:有一张由5位数构成的单据号码,只能看清其万位上的数字为1、十位上的数字为7、个位上的数字为6,其千位和百位上的数字模糊不清了,已知这个数能被57与67整除,请使用计算机求这些单据号码。
运行结果为:
以可编辑的方式打开E:\必修1\项目七-第三课时\高一*班\枚举法求数.py 将上图中的程序块写入该文档,并调试运行至结果正确。
思考问题:
1. 函数range(0,10)产生的序列为: 。
2. 若果将for q range(0,10):改为for q in range(1,10)是否可以计算出正确的结果?为什么?
3. 该程序利用嵌套循环函数枚举了( )个数。
4. 该程序并利用语句 对枚举的数进行判断,如果满足条件则输出该数。
5. 如果题目其他条件保持不变,将该数能被57与67整除改为该数能被63或57整除,请复制上面的程序,做适当更改,调试运行直至得出正确结论。
案例2:百钱百鸡
“百鸡百钱”问题是一个有名的数学问题,出自《张丘建算经》。其内容是:公鸡5文钱1只,母鸡3文钱1只,小鸡3只1文钱,用100文钱买100只鸡,其中公鸡、母鸡和小鸡都必须要有,问公鸡、母鸡和小鸡各多少只?
以可编辑的形式打开“E:\必修1\项目七-第三课时\高一*班\百钱百鸡.py”,删除程序中的序号①②③并在该位置填入合适的数值或变量名,调试运行,直至运行结果正确。
案例3:找出1-100内的所有质数(只能被1和本身整除的自然数)。
以可编辑的形式打开“E:\必修1\项目七-第三课时\高一*班\枚举法求质数.py”,删除程序中的序号①②并在该位置填入合适的数值,调试运行,直至运行结果正确。100以内的质数有:2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97
提示:
1.break 当某些条件成立,退出整个循环,也就是终止整个循环,后面的都不会执行;continue当条件成立,退出当前一次循环,继而执行下一次循环。
2.设两个数为a,b,若a%b==0,则说明a能被b整除。
学科网(北京)股份有限公司
$