目录

  • 前言
    • ●  Python解释器安装
    • ●  PyCharm开发环境
  • Python程序设计实验
    • ●  实验1 IDLE与代码编写规范
    • ●  实验2 输入输出与数据类型
    • ●  实验3 字符串处理
    • ●  实验4 数据运算
    • ●  实验5 列表与元组应用
    • ●  实验6 字典与集合应用
    • ●  实验7 if语句与match语句
    • ●  实验8 使用循环语句
    • ●  实验9 异常处理
    • ●  实验10 函数应用
    • ●  实验11 类的应用
    • ●  实验12 模块应用
    • ●  实验13  应用re模块
    • ●  实验14 文件处理
    • ●  实验15 用户界面设计
    • ●  实验18 SQLite数据库应用
    • ●  理论考试模拟试题A
    • ●  理论考试模拟试题B
    • ●  理论考试模拟试题C
    • ●  理论考试模拟试题D
  • 学习参考
    • ●  01 Python及其IDLE环境
    • ●  02 Python代码规范
    • ●  03 常量和变量
    • ●  04 输入输出
    • ●  05 运算符
    • ●  06 数值类型
    • ●  07 字符串
    • ●  08 列表
    • ●  09 元组
    • ●  10 字典
    • ●  11 集合
    • ●  12 条件语句
    • ●  13 循环语句
    • ●  14 异常处理
    • ●  15 自定义函数
    • ●  16 内置函数
    • ●  17 模块导入与定义
    • ●  18 math模块
    • ●  19 os模块
    • ●  20 time模块
    • ●  21 random模块
    • ●  22 文本文件
    • ●  23 二进制文件
    • ●  24 类的创建和使用
    • ●  25 类的继承与多态
 实验8 使用循环语句

教学视频-->>


任务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后面的语句仅当循环条件不满足或遍历已经完成时被执行。