【头歌系统Python实验】循环结构
目录
如果对你有帮助的话,不妨点赞收藏评论一下吧,爱你么么哒😘??????
第1关:While 循环与 break 语句
任务描述
程序的第三大结构是循环结构。在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环。循环语句分为while
循环、for
循环、循环嵌套和迭代器。循环语句中有一个语句break
,通过这个语句可以跳出整个循环。
以下场景便模拟了循环结构与跳出循环的现实场景: 在一个工厂的流水线上每天需要加工零件100
件,且每件零件所做的加工都是一样的,也就是说流水线每天要循环做相同的工作100
次。但是如果在加工时突然停电,则流水线停止对后面所有零件的加工,跳出循环。
本关的任务是让学习者学会使用while
循环与break
语句。
相关知识
while
循环和break
的结构如下图1所示:
图 1
while
语句
while
语句的基本形式为:
-
while 判断条件1:
-
循环语句
当判断条件1
为true
时,执行循环语句,直到判断条件1
为假。例如:
-
count = 0
-
while(count <= 10):
-
print("现在计数为:",count)
-
count += 1
break
语句
break
语句的基本形式为:
-
while 判断条件1:
-
循环语句
-
判断条件2:
-
break
当判断条件1
为true
时执行循环语句。若此时判断条件2
为true
,执行break
跳出while
循环,若判断条件2
一直为false
,则执行while
循环,一直到判断条件1
为false
。 例如:
-
count = 0
-
while(count <= 10):
-
print("现在计数为:",count)
-
count += 1
-
if(count > 5):
-
break
如果您想了解更多循环结构的相关知识,请参考:[美] Katie Cunningham 著《 Python 入门经典》
第三章。
编程要求
本关的编程任务是补全line.py
文件中的判断语句部分,具体要求如下:
-
填入当已处理零件数小于总零件数
count < partcount
时的while
循环判断语句; -
在停电时填入
break
语句跳出循环。
本关涉及的代码文件line.py
的代码框架如下:
-
partcount = int(input())
-
electric = int(input())
-
count = 0
-
# 请在此添加代码,当count < partcount时的while循环判断语句
-
########## Begin ##########
-
########## End ##########
-
count += 1
-
print("已加工零件个数:",count)
-
if(electric):
-
print("停电了,停止加工")
-
# 请在此添加代码,填入break语句
-
########## Begin ##########
-
########## End ##########
测试说明
本文的测试文件是line.py
,具体测试过程如下:
-
平台自动编译生成
line.exe
; -
平台运行
line.exe
,并以标准输入方式提供测试输入; -
平台获取
line.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step1/line.py
的样例测试集: 测试输入:
-
3
-
0
预期输出:
-
已加工零件个数: 1
-
已加工零件个数: 2
-
已加工零件个数: 3
开始你的任务吧,祝你成功!
partcount = int(input())
electric = int(input())
count = 0
#请在此添加代码,当count < partcount时的while循环判断语句
#********** Begin *********#
while(count<partcount):
#********** End **********#
count += 1
print("已加工零件个数:",count)
if(electric):
print("停电了,停止加工")
#请在此添加代码,填入break语句
#********** Begin *********#
break
#********** End **********#
第2关:for 循环与 continue 语句
任务描述
Python 中还为我们提供了一种循环结构:for
循环。for
循环可以遍历序列成员,直到序列中的成员全部都遍历完后才跳出循环。循环语句中有一个continue
语句,这个语句的作用是跳出当前循环。
以下场景便模拟了for
循环结构与跳出当前循环的现实场景: 全班同学的试卷为一个序列,老师在批阅一个班同学的试卷时,需要从第一个同学开始一个一个批阅,然后根据每个同学的具体答卷情况给出最后得分。如果评阅到某张试卷时发现这位同学缺考,为空白卷,那么就不评阅这张试卷,直接评阅下一张。当全部同学的试卷都评阅完毕时,结束评阅,跳出循环。
本关的任务是让学习者学会使用for
循环与continue
语句。
相关知识
for
循环和continue
结构如下图1所示:
图 1
for
语句
for
语句的基本形式为:
-
for iteration_var in sequence:
-
循环语句
依次遍历序列中的成员,执行循环语句。例如:
-
list = ['python','java','c','c++']
-
for book in list:
-
print("当前书籍为:",book)
continue
语句
continue
语句的基本形式为:
-
for iteration_var in sequence:
-
循环语句
-
if 判断语句1:
-
continue
当遍历序列时,如果判断语句1
为真,则执行continue
语句,跳出当前循环,直接进入下一次循环。例如:
-
list = ['python','java','c','c++']
-
count = 0
-
for book in list:
-
count += 1
-
if count == 3:
-
continue
-
print("当前书籍为:",book)
如果您想了解更多循环结构的相关知识,请参考:[美] Katie Cunningham 著《 Python 入门经典》
第三章。
编程要求
本关的编程任务是补全checkWork.py
文件中的部分代码,具体要求如下:
-
填入循环遍历
studentname
列表的代码; -
当遍历到缺席学生时,填入
continue
语句跳过此次循环。
本关涉及的代码文件checkWork.py
的代码框架如下:
-
absencenum = int(input())
-
studentname = []
-
inputlist = input()
-
for i in inputlist.split(','):
-
result = i
-
studentname.append(result)
-
count = 0
-
# 请在此添加代码,填入循环遍历studentname列表的代码
-
########## Begin ##########
-
########## End ##########
-
count += 1
-
if(count == absencenum):
-
# 请在下面填入continue语句
-
########## Begin ##########
-
########## End ##########
-
print(student,"的试卷已阅")
测试说明
本文的测试文件是checkWork.py
,具体测试过程如下:
-
平台自动编译生成
checkWork.exe
; -
平台运行
checkWork.exe
,并以标准输入方式提供测试输入; -
平台获取
checkWork.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step2/checkWork.py
的样例测试集: 测试输入:
-
2
-
zhangsan,lisi,wangwu,zhaoliu,qianqi
预期输出:
-
zhangsan 的试卷已阅
-
wangwu 的试卷已阅
-
zhaoliu 的试卷已阅
-
qianqi 的试卷已阅
开始你的任务吧,祝你成功!
absencenum = int(input())
studentname = []
inputlist = input()
for i in inputlist.split(','):
result = i
studentname.append(result)
count = 0
#请在此添加代码,填入循环遍历studentname列表的代码
#********** Begin *********#
for student in studentname:
#********** End **********#
count += 1
if(count == absencenum):
#在下面填入continue语句
#********** Begin *********#
continue
#********** End **********#
print(student,"的试卷已阅")
第3关:循环嵌套
任务描述
在Python 中,除了while
循环与for
循环,还有循环嵌套。循环嵌套就是在一个循环体里嵌入另一个循环。以下场景便模拟了循环嵌套与跳出循环的现实场景: 在一次考试结束后,学校需要统计每位同学的考试总成绩。在这个场景中,我们先将所有同学组成一个序列,然后遍历每位同学。在遍历到每位同学时还要遍历每位同学的每门分数并进行计算,最后得出每位同学的总成绩。
本关的任务是让学习者学会使用循环嵌套。
相关知识
循环嵌套分为for
循环嵌套和while
循环嵌套。
for
循环嵌套
for
循环嵌套的基本形式为:
-
for iteration_var in sequence:
-
for iteration_var in sequence:
-
循环语句
例如:
-
for x in range(1,10):
-
for y in range(0,x):
-
result = x + y
-
print(result)
while
循环嵌套
while
循环嵌套的基本形式为:
-
while 判断条件:
-
while 判断条件:
-
循环语句
例如:
-
x = 1
-
y = 0
-
while x < 10:
-
while y < x:
-
result = x + y
-
print(result)
-
y += 1
-
x += 1
-
y = 0
如果您想了解更多循环嵌套的相关知识,请参考:[美] Katie Cunningham 著《 Python 入门经典》
第三章。
编程要求
本关的编程任务是补全sumScore.py
文件中的部分代码,具体要求如下:
-
当输入学生人数后,填入在
for
循环遍历学生的代码; -
当输入各科目的分数后的列表后,填入
for
循环遍历学生分数的代码。
本关涉及的代码文件sumScore.py
的代码框架如下:
-
studentnum = int(input())
-
# 请在此添加代码,填入for循环遍历学生人数的代码
-
########## Begin ##########
-
########## End ##########
-
sum = 0
-
subjectscore = []
-
inputlist = input()
-
for i in inputlist.split(','):
-
result = i
-
subjectscore.append(result)
-
# 请在此添加代码,填入for循环遍历学生分数的代码
-
########## Begin ##########
-
########## End ##########
-
score = int(score)
-
sum = sum + score
-
print("第%d位同学的总分为:%d" %(student,sum))
测试说明
本文的测试文件是sumScore.py
,具体测试过程如下:
-
平台自动编译生成
sumScore.exe
; -
平台运行
sumScore.exe
,并以标准输入方式提供测试输入; -
平台获取
sumScore.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step3/sumScore.py
的样例测试集: 测试输入:
-
2
-
23,56,78,90
-
21,56,78,76,91
预期输出:
-
第0位同学的总分为:247
-
第1位同学的总分为:322
开始你的任务吧,祝你成功!
studentnum = int(input())
#请在此添加代码,填入for循环遍历学生人数的代码
#********** Begin *********#
for student in range(studentnum):
#********** End **********#
sum = 0
subjectscore = []
inputlist = input()
for i in inputlist.split(','):
result = i
subjectscore.append(result)
#请在此添加代码,填入for循环遍历学生分数的代码
#********** Begin *********#
for score in subjectscore:
#********** End **********#
score = int(score)
sum = sum + score
print("第%d位同学的总分为:%d" %(student,sum))
第4关:迭代器
任务描述
迭代器用来循环访问一系列元素,它不仅可以迭代序列,也可以迭代不是序列但是表现出序列行为的对象。本关的任务是让学习者理解与学会使用迭代器。
相关知识
迭代器的优点
-
迭代器访问与
for
循环访问非常相似,但是也有不同之处。对于支持随机访问的数据结构如元组和列表,迭代器并无优势。因为迭代器在访问的时候会丢失数据索引值,但是如果遇到无法随机访问的数据结构如集合时,迭代器是唯一访问元素的方式; -
迭代器仅仅在访问到某个元素时才使用该元素。在这之前,元素可以不存在,所以迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合;
-
迭代器提供了一个统一的访问集合的接口,定义
iter()
方法对象,就可以使用迭代器访问。
理解迭代器
可直接作用于for
循环的数据类型如list
、tuple
、dict
等统称为可迭代对象:Iterable
。使用isinstance()
可以判断一个对象是否是可迭代对象。例如:
-
from collections import Iterable
-
result = isinstance([],Iterable)
-
print(result)
-
result = isinstance((),Iterable)
-
print(result)
-
result = isinstance('python',Iterable)
-
print(result)
-
result = isinstance(213,Iterable)
-
print(result)
结果为:
-
True
-
True
-
True
-
False
可以被next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
。next()
函数访问每一个对象,直到对象访问完毕,返回一个StopIteration
异常。使用isinstance()
可以判断一个对象是否是Iterator
对象。例如:
-
from collections import Iterator
-
result = isinstance([],Iterator)
-
print(result)
-
result = isinstance((),Iterator)
-
print(result)
-
result = isinstance((x for x in range(10)),Iterator)
-
print(result)
结果为:
-
False
-
False
-
True
所有的Iterable
都可以通过iter()
函数转化为Iterator
。
定义迭代器
当自己定义迭代器时,需要定义一个类。类里面包含一个iter()
函数,这个函数能够返回一个带next()
方法的对象。例如:
-
class MyIterable:
-
def __iter__(self):
-
return MyIterator()
-
class MyIterator:
-
def __init__(self):
-
self.num = 0
-
def __next__(self):
-
self.num += 1
-
if self.num >= 10:
-
raise StopIteration
-
return self.num
复制迭代器
迭代器当一次迭代完毕后就结束了,在此调用便会引发StopIteration
异常。如果想要将迭代器保存起来,可以使用复制的方法:copy.deepcopy():x = copy.deepcopy(y)
,不可使用赋值的方法,这样是不起作用的。
如果您想了解更多迭代器的相关知识,请参考:[美] Wesley J.Chun 著《 Python 核心编程》
第八章。
编程要求
本关的编程任务是补全ListCalculate.py
文件中的部分代码,具体要求如下:
-
当输入一个列表时,填入将列表
List
转换为迭代器的代码; -
填入用
next()
函数遍历迭代器IterList
的代码。
本关涉及的代码文件ListCalculate.py
的代码框架如下:
-
List = []
-
member = input()
-
for i in member.split(','):
-
result = i
-
List.append(result)
-
# 请在此添加代码,将List转换为迭代器的代码
-
########## Begin ##########
-
########## End ##########
-
while True:
-
try:
-
# 请在此添加代码,用next()函数遍历IterList的代码
-
########## Begin ##########
-
########## End ##########
-
result = int(num) * 2
-
print(result)
-
except StopIteration:
-
break
测试说明
本文的测试文件是ListCalculate.py
,具体测试过程如下:
-
平台自动编译生成
ListCalculate.exe
; -
平台运行
ListCalculate.exe
,并以标准输入方式提供测试输入; -
平台获取
ListCalculate.exe
输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。
以下是平台对src/step4/ListCalculate.py
的样例测试集: 预期输入:
-
5,6,7,8,9
预期输出:
-
10
-
12
-
14
-
16
-
18
开始你的任务吧,祝你成功!
List = []
member = input()
for i in member.split(','):
result = i
List.append(result)
#请在此添加代码,将List转换为迭代器的代码
#********** Begin *********#
it=iter(List)
#********** End **********#
while True:
try:
#请在此添加代码,用next()函数遍历IterList的代码
#********** Begin *********#
num=next(it)
#********** End **********#
result = int(num) * 2
print(result)
except StopIteration:
break
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!