教学视频-->>
任务1 for语句应用
输入1个大于200的整数m,输出[200,m]上不能被8整除且不含数字9的整数个数。不检查输入数据的有效性。
要求:
1、使用for语句完成计算。
2、程序保存到:s8t1.py
3、程序执行效果:
输入1个整数:1233
计算结果=651
【参考与提示】
求解思路:
1、由range函数创建[200,m]上的整数序列。
2、定义变量s统计数据个数:s=0
3、使用for语句遍历序列的每一个整数k:如果k不能被8整除且不含数字9,则s增1。
提示:整数k转换为字符串后再判断是否包含数字9。
输入一个字符串s,对s的每一个字符c作如下处理:
1、如果c是大写字母,将其替换为大写字母顺序表中c的下一个字母。规定:Z的下一个字母为A。
2、如果c是小写字母,将其替换为小写字母顺序表中c的下一个字母。规定:z的下一个字母为a。
3、其他字符不作替换。
要求:
1、使用for语句完成字符替换。
2、程序保存到:s8t1.py
3、程序执行效果:
输入一个字符串:Ad45T6z
替换结果=Be45U6a
【参考与提示】
求解思路:
1、定义一个空列表a和2个字符串s1(大写字母顺序表)、s2(小写字母顺序表)。
2、使用for语句遍历字符串s每个字符c:
(1)如果c在s1中,得到其在s1中的索引k,将s1[(k+1)%26]添加到a中。
(2)如果c在s2中,类似(1)处理。
(3)如果c不在s1和s2中,将c添加到a。
3、使用字符串的内置函数join将a的元素连接成字符串后输出。
任务2 while语句应用
已知a=[82,73,65,56,48,39]。输入1个整数,将该整数尽量靠后插入a中,且需保持a递减有序。输出这个整数插入的位置索引。不检查输入数据的有效性。
要求:
1、使用while语句,不能使用for语句。
2、程序保存到:s8t2.py
3、程序执行效果:
输入1个整数:65
插入位置索引=3
【参考与提示】
求解思路(设待插入的整数为n):
1、从a[0]开始搜索插入位置:k=0。
2、如果n>a[k],转4。
3、k增1。如果k>5,转4。否则转2。
4、输出k的位置索引。
已知a=[82,73,65,56,48,39]。输入1个整数,将该整数尽量靠前插入a中,且需保持a递减有序。输出这个整数插入的位置索引。不检查输入数据的有效性。
要求:
1、使用while语句,不能使用for语句。
2、程序保存到:s8t2.py
3、程序执行效果:
输入1个整数:65
插入位置索引=2
【参考与提示】
求解思路(设待插入的整数为n):
1、从a[0]开始搜索插入位置:k=0。
2、如果n>a[k],转4。
3、k增1。如果k>5,转4。否则转2。
4、输出k的位置索引。
任务3 列表推导式应用
输入一个整数序列,取出不小于60的数据并输出它们的均值(四舍五入保留到小数后2位)。不检查输入数据有效性。
要求:
1、使用列表推导式,不能使用循环语句。
2、程序保存到:s8t3.py
3、程序执行效果:
输入整数序列:52,81,72,89,90,39,96,25
计算结果=85.60
【参考与提示】
求解思路:
1、利用列表推导式筛选出重复的数据。
格式:[ A for x in B if C ]
作用:对B中每个满足条件C的元素x,生成列表的元素A。
2、利用列表内置函数count统计元素出现次数。如果该函数值大于1,表明元素重复。
3、利用sum函数可计算列表全部元素的和。
4、利用len函数可计算列表的数据个数。
5、根据和值和数据个数,即可计算均值。
输入一个整数序列,取出重复数据并输出它们的最大值。不检查输入数据有效性。
要求:
1、使用列表推导式,不能使用循环语句。
2、程序保存到:s8t3.py
3、程序执行效果:
输入整数序列:72,81,72,89,90,89,96,65
计算结果=89
【参考与提示】
求解思路:
1、利用列表推导式筛选出重复的数据。
格式:[A for x in B if C]
作用:对B中每个满足条件C的元素x,生成列表的元素A。
2、利用列表内置函数count统计元素出现次数。如果该函数值大于1,表明元素重复。
3、利用min函数可计算列表元素的最小值。
任务4 循环的嵌套
输入整数n,统计不等式5x+3y<n共有多少组正整数解。不检查输入数据的有效性。
要求:
1、程序保存到:s8t4.py
2、程序执行效果:
输入1个整数:55
正整数解的组数=85
【参考与提示】
求解思路:
使用二重循环搜索。x的搜索区间为[1,n//5],y的搜索区间为[1,n//3]。
输入一个大于1000的正整数n,输出区间[1,n]上质数的个数。不检查输入数据的有效性。
要求:
1、程序保存到:s8t4.py
2、程序执行效果:
输入1个整数:1211
质数的个数=197
【参考与提示】
求解思路:
对[1,n]上的每个整数x,在[2,x-1]上搜索x的约数。如果约数为0,则x为质数。
或者,在区间2,k上搜索x的约数。如果约数为0,则x为质数。
任务5 break、continue与else的使用
根据注释将以下代码中的 “<X>” 替换为适当的内容:
s=input (' 输入1个 [1,9] 上的整数:')
v=0
for k in range (1,100):
if k%8==0:<X> #满足条件到下一轮循环
v+=k
if s in str (v):<X> #满足条件终止循环
<X>:v+=10 #循环完成而非中断,v 加 10
print (f"k={k},v={v}")
要求:
1、程序保存到:s8t5.py
2、程序执行效果:
输入 1 个 [10,99] 上的整数:9
k=14,v=97
【参考与提示】
1、在循环语句中:
(1)使用break语句强行退出循环。
(2)使用continue语句终止本轮循环,跳转到下一轮循环。
2、for和while可与else搭配使用。else后面的语句仅当循环条件不满足或遍历已经完成时被执行。

