课时6 While循环语句及程序实现 课时目标 1.掌握while循环语句的语法格式,理解while循环的功能。2.熟练使用while循环语句解决实际问题。 1.while循环的功能 While循环在执行时,首先会判断条件是否为真,如果条件为真,执行一次循环体,再次判断条件是否为真,如果仍为真,那么再执行一次循环体,以此类推,直到条件为假时退出while语句。 2.while循环语句格式 while<条件>: <循环体> 3.while循环适用场合 (1)循环次数未知,但循环结束的条件已知。 (2)循环条件有两个或两个以上。 ①在while循环前应对变量赋初值。 ②循环变量的变化要在循环体内通过赋值语句来实现。 例1 输入一个正整数,输出所有的质因子。如24=2*2*2*3。实现上述功能的Python代码如下: n=int(input("输入一个正整数:")) i=2 while ① : if n %i==0: n=n/i print(i) else: ② (1)在程序划线处填入合适的代码。 (2)按照上述算法,输入60,依次输出的质因子是 。 答案 (1)①n>1或n!=1 ②i+=1 (2)2 2 3 5 解析 最小的质因数是2,如果能被2整除,则反复相除,当不能被2整除时,将i增加1,尝试被3整除,如果还不能除通,往上增加到4,由于前面反复除2操作,因此不可能被不是质数的数除通。当相除的结果为1时,终止循环。输入60,可以被2除2次,被3除1次,被5除1次。 变式训练1 工作人员手中有人民币100、50、20、10和1元5个币种,输入一个金额,按最大票面优先兑换的原则,输出相应的人民币及张数。实现上述功能的Python代码如下: je=int(input("请输入金额!")) rmb=[100,50,20,10,1] i,t=0,0 while je>0: if① : t=je∥rmb[i] ② print("兑换"+str(rmb[i])+"元"+str(t)+"张") else: i+=1 (1)在程序划线处填入合适的代码。 (2)按照上述算法,输入356,依次输出人民币100、50、20、10和1元5个币种的总的数量是 。 答案 (1)①je>=rmb[i] ②je=je-rmb[i]*t (2)10 解析 当所剩金额大于或等于当前币种时,计算可以兑换的张数t,接着减去当前币种的金额,如果金额小于当前金额时,找到下一种较小的金额进行尝试,直到全部兑换完毕。输入356元,可以换3张100元,1张50元和6张1元。 例2 十进制数转换成二进制数:十进制可以用按权展开相加的表达式来表示,如13D=1×23+1×22+0×21+1×20。若十进制数大于k位上的权值,则k位上数为1,否则为0。设计的Python程序如下所示: n=int(input("输入一个十进制数")) ss="" k=0 while 2**k0 and k>0: t=2**(k-1) if n>=t: ss=ss+"1" ① else: ss=ss+"0" ② print(ss) (1)加框处代码有误,请修正这个错误。 (2)请在程序划线处填入合适的代码。 答案 (1)n>0 or k>0 (2)①n=n-t ②k-=1 解析 变量k表示转换成二进制的长度,每次需减去k位上的权值t,若n大于等于t,表示该位上数为1,完成该位转换,同时需减去该位上的可能权值。若n已经为零,但k并没有达到最低位0,例如12D,减去8减去4后,得到0,但只输出2个1,此时k=2,还需输出2个0。 变式训练2 下列程序的功能是:计算表达式1×3+2×3+3×3+…100×3的值,并输出计算结果。 s=0 i=1 while i<=100: i+=1 print(s) (1)刚退出循环时,变量i的值是 。 (2)为了实现上述表达式的计算,程序中划线处的语句为 。 答案 (1)101 (2)s=s+i*3或s+=i*3 解析 本题主要考查的是while循环的程序实现。(1)循环变量i的初值为1,步长为1,循环条件为i<=100,即当i=101时,循环结束。(2)根据表达式可知,划线处语句的功能是将i*3的值进行累加,从print(s)语句可知,累加和存放在变量s中,因此 ... ...
~~ 您好,已阅读到文档的结尾了 ~~