信息技术3.2 Python语言程序设计课文ppt课件
展开
这是一份信息技术3.2 Python语言程序设计课文ppt课件,共24页。PPT课件主要包含了判定素数等内容,欢迎下载使用。
对于我们人类,循环是不自然的,谁没事儿会给自己编个循环像机器人一样生活呢?计算机最擅长的就是重复,不是吗?一个循环就是一组重复执行的语句用循环的想法来设计计算的过程Pythn提供了两种类型的循环语句:while循环和fr循环while循环是一种条件控制循环,根据条件的真假来控制fr循环是一种计数器控制循环,会重复特定的次数
循环体现了计算机的思维方式
while循环语法如下:while 条件: 循环体条件两边没有圆括号,:是while语句的组成部分循环体由语句构成,必须相对于while向右缩进(一般是向右缩进4个空格)。通过缩进,Pythn能够识别出循环体是隶属于while的对循环体的一次执行称为一个循环周期。while循环中,在每个循环周期前进行条件检测,如果一开始条件检测的结果为“假”,则循环体一次都不执行
如何用计算机解?用一个变量ttal保存累加和,其初始值为0对于1、2、3、…、100中的每一个整数i,依次把它加入到ttal中第1次,ttal为0、i为1,ttal + i为1,结果保存回ttal第2次,ttal为1、i为2,ttal + i为3,结果保存回ttal…第100次,ttal为4950、i为100,ttal + i为5050,结果保存回ttal问题抽象为统一的形式:ttal = ttal + i,采用while循环重复地计算
【例】编写程序,用户从键盘输入若干个整数,输出它们的和。用变量ttal保存累加和,其初始值为0键盘上输入的整数value,依次把它加入到ttal中问题抽象为统一的形式:ttal = ttal + value,采用while循环重复地计算输入的整数数量未知,要自己设计循环结束条件引入一个用来结束循环的特殊标志(哨兵),在循环执行过程中,遇到该标志,循环就结束了。标志不能是用户要累加的整数值。0不会对最后的累加和产生影响。本题用来结束循环的标志是0
【例】编写程序,用户从键盘输入若干个整数,输出它们的和。通用的方法是引入用来结束循环的特殊标志EOF通常在Windws中,输入^Z(Ctrl+Z)表示EOF,在Mac OS X和Linux/Unix中,输入^D(Ctrl+D)表示EOF。Pythn中,输入^D(Ctrl+D)表示EOF在循环输入数据过程中,若遇到EOF,则会抛出EOFErrr异常,通过使用try-except异常处理机制捕获该异常,结束循环
【例】编写程序,要求用户从键盘输入一个正整数n,求n!,n!=1×2×…×n。用变量mul保存累乘积,其初始值为1对于1、2、3、…、n中的每一个整数i,依次将i和mul相乘第1次,mul为1、i为1,mul * i为1,结果保存回mul第2次,mul为1、i为2,mul * i为2,结果保存回mul…问题抽象为统一的形式:mul = mul * i,采用while循环重复地计算
【例】编写程序,随机生成一个[0, 100]之间的整数(称为神秘数),提示用户连续输入数字,直至其与神秘数相等;对于用户输入的数字,会提示它比神秘数大或小,便于用户更明智地选择下一个输入的数字。
使用一个控制变量控制循环执行的次数,这种类型的循环被称为计数器控制的循环fr循环的语法fr var in sequence: 循环体循环体由语句构成,必须相对于fr向右缩进(一般是向右缩进4个空格)。通过缩进,Pythn能够识别出循环体是隶属于fr的序列sequence中保存着一组元素,元素的个数决定了循环重复的次数,因此,fr循环的循环次数是确定的。fr循环依次从序列中取出元素,赋予变量var,var每取序列sequence中的一个元素值,就执行一次循环体
range函数的参数必须为整数range(a)等价于range(0, a),产生连续整数序列:0、1、...、a – 1range(a, b),产生连续整数序列:a、a + 1、...、b – 2、b – 1range(a, b, k),k为步长,若k为正数,产生整数序列:a、a + k、a + 2k、...,最后一个数必须小于b;若k为负数,产生整数序列:a、a + k、a + 2k、...,最后一个数必须大于b
【例】编写程序,求1+2+3+...+100的和。【例】编写程序,要求用户从键盘输入一个正整数n,求n!,n!=1×2×…×n。
一个循环语句的循环体中包含另一个循环语句时,就称为嵌套循环嵌套循环由一个外层循环和一个或多个内层循环组成。外层循环每循环一次都会重新进入内层循环,并重新开始执行内层循环【例】编写程序,显示乘法口诀表。
pass语句其实是空语句,不做任何事情,只起占位的作用break语句用于某种情况发生时提前结束循环。循环中的break总是需要和if语句配合使用
pass、break和cntinue语句
正常情况下执行20次循环。实际执行了14次循环。在第14次循环时,ttal的值大于100了,执行break语句,结束循环,输出结果
cntinue语句用来使程序执行流程跳过当次循环,继续下一次循环。循环中的cntinue一般也需要和if语句配合使用cntinue语句和break语句的区别是:cntinue只结束当次循环的执行,继续下一次,而不是终止整个循环。而break则是结束整个循环的执行
正常情况下执行20次循环。但在第10、11次循环时,会执行cntinue语句,跳过当次循环,cntinue后面的语句ttal = ttal+i不会执行,即i的值10和11不会累加到ttal中,继续下一次循环
【例】1百元买1百只鸡,其中公鸡5元1只、母鸡3元1只、小鸡1元3只,要求每种鸡都必须有,则公鸡、母鸡和小鸡应各买几只。穷举法基本思想是不重复、不遗漏地列举所有可能情况,从中寻找满足条件的结果。用穷举法来解决的问题应具有两个特点:有明显的穷举范围且穷举的数目应该是有限的;可以按某种规则列举所有情况。一般采用循环来列举所有情况考虑公鸡、母鸡和小鸡数量的取值范围三种鸡都必须有,购买公鸡的钱最多为100 - 3 - 1 = 96元,取5的倍数,得95元,所以公鸡数量的取值范围为1~19只同理,母鸡数量的取值范围为1~31只购买小鸡的钱最多为100 – 5 – 3 = 92元,可以购买276只,但鸡的总数量为100只,小鸡数量应小于等于98,且小鸡数量为3的倍数,小鸡数量的取值范围为3~96只
对于每种鸡的取值都要反复地试,最后确定正好满足100元买1百只鸡的组合。因此每种鸡都要按照各自的取值范围循环,可以采用三重循环假设cck表示公鸡,hen表示母鸡,chick表示小鸡,则得到如下条件: cck + hen + chick == 100 cck * 5 + hen * 3 + chick // 3 == 100 chick % 3 == 0 程序要寻找同时满足上述条件的正整数解
由于cck + hen + chick == 100,确定了cck和hen的值,也就确定了chick的值,可以省略第三重chick循环。 cck * 5 + hen * 3 + (100 - cck – hen) // 3 == 100 (100 - cck – hen) % 3 == 0
【例】编写程序,从键盘输入一个正整数n,判断它是否是素数。如果一个正整数只能被1和它本身整除,则这个正整数就是素数。1不是素数,2是素数。根据素数的定义,对于给定的正整数n,n是素数的条件是不能被2、3、……、n-1整除实际上,任何大于n/2的值不可能被n整除,因此n是素数的条件可以简化为不能被2、3、……、n/2整除进一步可以证明n是素数的条件是不能被2、3、……、 整除
【例】输入两个正整数m和n,求它们的最大公约数和最小公倍数。几个自然数公有的约数,叫做这几个自然数的公约数。公约数中最大的一个称为这几个自然数的最大公约数。几个自然数公有的倍数,叫做这几个自然数的公倍数。公倍数中最小的一个大于零的公倍数,叫做这几个自然数的最小公倍数求最大公约数较好的算法是古希腊数学家欧几里德提出的,也称辗转相除法。算法描述如下:(1)取m除以n的余数r;(2)如果r为0,算法结束,最大公约数为n;(3)如果r不为0,设m等于原来n的值,n等于r值,重复上述过程。求最小公倍数的算法:若干个n之和ttal,如果能被m整除,则该和就是m、n的最小公倍数。或者,可以先计算m和n的最大公约数,然后再用m和n的积去除最大公约数来求得最小公倍数
求最大公约数和最小公倍数
相关课件
这是一份高中信息技术浙教版 (2019)必修1 数据与计算3.2 Python语言程序设计课前预习ppt课件,共19页。PPT课件主要包含了为什么是Python,官网上的说明,Python缺点,安装Python,使用Python,避免缩进错误,做点计算,print函数等内容,欢迎下载使用。
这是一份信息技术必修1 数据与计算5.2 人工智能的应用教课课件ppt,共22页。PPT课件主要包含了领域人工智能,跨领域人工智能,混合增强智能,人机协同的太空机器人,人工智能的三类应用,人工智能的应用,谈一谈,智能家居,智慧城市,人工智能改善人类生活等内容,欢迎下载使用。
这是一份信息技术必修1 数据与计算3.2 Python语言程序设计课文课件ppt,共16页。PPT课件主要包含了输入输出,追加数据读写数值数据,文件定位等内容,欢迎下载使用。