当前位置:文档之家› Python程序设计-第4章-循环结构程序设计(第7次课)2说课材料

Python程序设计-第4章-循环结构程序设计(第7次课)2说课材料


1-6
计算机编程导论
【例4-7】 通过以下表达式求π的近似值,当某项小于
0.00000001(即1e-8)时停止循环。
1 1 1 2 1 23 1 23 4 1 2 n
2 3 35 357 3579
3 5 (2n 1)
Copyright © SWFU-CISD, 2012. All rights reserved.
提问:
请问语句“i += 1”可以和语句 “print i, '\t ' ”对齐吗?
Copyright © SWFU-CISD, 2012. All rights reserved.
1-7
计算机编程导论
分析:
该题使用循环结构来解决,只有当某一项小于1e-8时才 停止迭代,因此循环次数是不确定的。观察表达式中 相邻两项的规律是——①前一项的分子乘以1个整数 值“i”可得后一项的分子,而这个整数值“i”随着循 环次数由1递增到n;②前一项的分母乘以“2*i+1”可 得后一项的分母。该题的通式有以下几个:
1-3
计算机编程导论
【例4-6】求以下表达式的值,其中n值从键盘输 入。参考值:当n = 11时,s = 1.833333 。
s 1 11 1 1 21 2 3 1 2 3 n
Copyright © SWFU-CISD, 2012. All rights reserved.
1-4
Python程序设计-第4章-循环 结构程序设计(第7次课)2
4.3.3 while语句用于无限循环
❖当while语句的“表达式”永远不会为布尔假时, 循环将永远不会结束,形成无限循环,也称死 循环。
❖使用while语句构成无限循环的格式通常为:
while True: 循环体
❖可以在循环体内使用break语句强制结束死循 环。
print('1~100之间能被7整除,但不能同时被5整除的所有数是:')
while i <= 100: #判断循环是否结束 if i % 7 == 0 and i % 5 != 0: #判断本次的i是否满足条件 print i, '\t ' #打印满足条件的i i += 1 #每次循环 i 应自增
1-8
计算机编程导论
开始 初始化 zi 、mu、i 、t、s
判断 t >= 1e -8? True
将 t 累加到 s
求分子 zi 、分母 mu 求当前项 t
i 自增 1
False
输出π的近似值
结束 图 4-9 求π近似值的框图
Copyright © SWFU-CISD, 2012. All rights reserved.
程序:
#Exp4_7.py
i=1
zi = 1.0
mu = 1.0
t = 1.0
s = 0.0
while t >= 1e-8:
s=s+t
zi = zi * i
mu = mu * ( 2 * i + 1)
t = zi * 1.0 / mu
i += 1
print 'PAI = ', (2 * s)
1-9
计算机编程导论
Байду номын сангаас
Copyright © SWFU-CISD, 2012. All rights reserved.
1-5
计算机编程导论
程序:
i=1
mu = 0
s = 0.0
n = input('请输入n值: ') #或用书上的代码
while i <= n: #判断是否计算到表达式的最后一项
mu = mu + i #求分母的通式
False False
(3)在每次循环过程中
需要用 if 语句进行条件
判断。因此本题是循环
嵌套选择的结构。
Copyright © SWFU-CISD, 2012. All rights reserved.
1-10
i 自增 1
结束 图 4-10 整除问题的框图
计算机编程导论
程序:
i = 1 # i 既是循环变量,同时又是被判断的数
(1)分子的通式:zi = zi * i
(2)分母的通式:mu = mu * (2 * i + 1)
(3)变量i的通式:i = i + 1
(4)当前项的通式:t = zi*1.0/mu
(5)求和通式:s=s+t
Copyright © SWFU-CISD, 2012. All rights reserved.
Copyright © SWFU-CISD, 2012. All rights reserved.
1-2
计算机编程导论
【例4-5】使用无限循环的方法编程实现例4-2。
开始
程序:
表达式 恒为真
True 输入一个字符
不是字符#吗?
True 输出该字符
a = input('请输入字符,如果输入 # 号
则结束输入操作: ')
【例4-8】求1 ~ 100之间能被7整除,但不能同 时被5整除的所有整数 。
【分析】
(1)本题需要对1 ~ 100 范围内的所有数一一进 行判断。
(2)本题的循环次数确 定是100次。
开始
为 i 赋初值 1
判断 i <= 100? True
判断 i 是否能被 7 整除但不能被 5 整
除?
True 输出 i
while True:
False
print('您输入的字符是:', a)
a = input('请输入字符,如果输
入 # 号则结束输入操作: ')
if a == '#':
break
结束
图 4-7 无限循环的框图
Copyright © SWFU-CISD, 2012. All rights reserved.
i += 1
# i 自增的通式
t = 1.0 / mu #求当前项的通式
s=s+t
#求和的通式
print 's = ', s #循环结束后,打印总和
提问:
(1)变量 i、mu、s 的初值只能是 1、0、0.0 吗?
(2)循环体内语句的先后顺序可以随意调换吗?
Copyright © SWFU-CISD, 2012. All rights reserved.
计算机编程导论
【分析】
(1)以上问题属于数学中的级数求和问题,是使用 循环结构解决的一类常见问题。
(2)级数求和问题编程的重点在于通过观察表达式 的规律,分析每次循环都要完成的事件。通常将这 些事件进行局部分解,称为“通式”。
该题的通式有以下几个: (1)分母的通式: mu = mu + i (2)变量i的通式: i = i + 1 (3)当前项的通式: t = 1.0 / mu (4)求和的通式: s = s + t
相关主题