热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

EduCoderLinux与Python编程2021(循环结构)

注意:所有题目均在一个博客中嘿嘿😎第1关:While循环与break语句任务描述程序的第三大结构是循环结构。在此结构中,

注意:所有题目均在一个博客中
嘿嘿😎


第1关:While 循环与 break 语句

任务描述
程序的第三大结构是循环结构。在此结构中,通过一个判断语句来循环执行一个代码块,直到判断语句为假时跳出循环。循环语句分为while循环、for循环、循环嵌套和迭代器。循环语句中有一个语句break,通过这个语句可以跳出整个循环。

以下场景便模拟了循环结构与跳出循环的现实场景:
在一个工厂的流水线上每天需要加工零件100件,且每件零件所做的加工都是一样的,也就是说流水线每天要循环做相同的工作100次。但是如果在加工时突然停电,则流水线停止对后面所有零件的加工,跳出循环。

本关的任务是让学习者学会使用while循环与break语句。

相关知识
while循环和break的结构如下图1所示:

图1
图 1
while语句
while语句的基本形式为:

while 判断条件1:
循环语句
当判断条件1为true时,执行循环语句,直到判断条件1为假。例如:

count = 0
while(count <&#61; 10):
print(“现在计数为:”,count)
count &#43;&#61; 1
break语句
break语句的基本形式为&#xff1a;

while 判断条件1&#xff1a;
循环语句
判断条件2&#xff1a;
break
当判断条件1为true时执行循环语句。若此时判断条件2为true&#xff0c;执行break跳出while循环&#xff0c;若判断条件2一直为false&#xff0c;则执行while循环&#xff0c;一直到判断条件1为false。
例如&#xff1a;

count &#61; 0
while(count <&#61; 10):
print(“现在计数为:”,count)
count &#43;&#61; 1
if(count > 5):
break
如果您想了解更多循环结构的相关知识&#xff0c;请参考&#xff1a;[美] Katie Cunningham 著《 Python 入门经典》第三章。

编程要求
本关的编程任务是补全line.py文件中的判断语句部分&#xff0c;具体要求如下&#xff1a;

填入当已处理零件数小于总零件数count

在停电时填入break语句跳出循环。

本关涉及的代码文件line.py的代码框架如下:

partcount &#61; int(input())
electric &#61; int(input())
count &#61; 0
请在此添加代码&#xff0c;当count ########## Begin ##########
########## End ##########
count &#43;&#61; 1
print(“已加工零件个数:”,count)
if(electric):
print(“停电了&#xff0c;停止加工”)
# 请在此添加代码&#xff0c;填入break语句
########## Begin ##########
########## End ##########
测试说明
本文的测试文件是line.py&#xff0c;具体测试过程如下&#xff1a;

平台自动编译生成line.exe&#xff1b;

平台运行line.exe&#xff0c;并以标准输入方式提供测试输入&#xff1b;

平台获取line.exe输出&#xff0c;并将其输出与预期输出对比。如果一致则测试通过&#xff0c;否则测试失败。

以下是平台对src/step1/line.py的样例测试集&#xff1a;
测试输入&#xff1a;

3
0
预期输出&#xff1a;

已加工零件个数: 1
已加工零件个数: 2
已加工零件个数: 3

partcount &#61; int(input())
electric &#61; int(input())
count &#61; 0
#请在此添加代码&#xff0c;当count
#********** Begin *********#
while count < partcount:
#********** End **********#count &#43;&#61; 1print("已加工零件个数:",count)if(electric):print("停电了&#xff0c;停止加工")#请在此添加代码&#xff0c;填入break语句#********** Begin *********#break#********** End **********#

第2关&#xff1a;for 循环与 continue 语句

任务描述
Python 中还为我们提供了一种循环结构&#xff1a;for循环。for循环可以遍历序列成员&#xff0c;直到序列中的成员全部都遍历完后才跳出循环。循环语句中有一个continue语句&#xff0c;这个语句的作用是跳出当前循环。

以下场景便模拟了for循环结构与跳出当前循环的现实场景&#xff1a;
全班同学的试卷为一个序列&#xff0c;老师在批阅一个班同学的试卷时&#xff0c;需要从第一个同学开始一个一个批阅&#xff0c;然后根据每个同学的具体答卷情况给出最后得分。如果评阅到某张试卷时发现这位同学缺考&#xff0c;为空白卷&#xff0c;那么就不评阅这张试卷&#xff0c;直接评阅下一张。当全部同学的试卷都评阅完毕时&#xff0c;结束评阅&#xff0c;跳出循环。

本关的任务是让学习者学会使用for循环与continue语句。

相关知识
for循环和continue结构如下图1所示&#xff1a;

图1
图 1
for语句
for语句的基本形式为&#xff1a;

for iteration_var in sequence:
循环语句
依次遍历序列中的成员&#xff0c;执行循环语句。例如&#xff1a;

list &#61; [‘python’,‘java’,‘c’,‘c&#43;&#43;’]
for book in list:
print(“当前书籍为:”,book)
continue语句
continue语句的基本形式为&#xff1a;

for iteration_var in sequence:
循环语句
if 判断语句1&#xff1a;
continue
当遍历序列时&#xff0c;如果判断语句1为真&#xff0c;则执行continue语句&#xff0c;跳出当前循环&#xff0c;直接进入下一次循环。例如&#xff1a;

list &#61; [‘python’,‘java’,‘c’,‘c&#43;&#43;’]
count &#61; 0
for book in list:
count &#43;&#61; 1
if count &#61;&#61; 3:
continue
print(“当前书籍为:”,book)
如果您想了解更多循环结构的相关知识&#xff0c;请参考&#xff1a;[美] Katie Cunningham 著《 Python 入门经典》第三章。

编程要求
本关的编程任务是补全checkWork.py文件中的部分代码&#xff0c;具体要求如下&#xff1a;

填入循环遍历studentname列表的代码&#xff1b;

当遍历到缺席学生时&#xff0c;填入continue语句跳过此次循环。

本关涉及的代码文件checkWork.py的代码框架如下:

absencenum &#61; int(input())
studentname &#61; []
inputlist &#61; input()
for i in inputlist.split(’,’):
result &#61; i
studentname.append(result)
count &#61; 0
请在此添加代码&#xff0c;填入循环遍历studentname列表的代码
########## Begin ##########
########## End ##########
count &#43;&#61; 1
if(count &#61;&#61; absencenum):
# 请在下面填入continue语句
########## Begin ##########
########## End ##########
print(student,“的试卷已阅”)
测试说明
本文的测试文件是checkWork.py&#xff0c;具体测试过程如下&#xff1a;

平台自动编译生成checkWork.exe&#xff1b;

平台运行checkWork.exe&#xff0c;并以标准输入方式提供测试输入&#xff1b;

平台获取checkWork.exe输出&#xff0c;并将其输出与预期输出对比。如果一致则测试通过&#xff0c;否则测试失败。

以下是平台对src/step2/checkWork.py的样例测试集&#xff1a;
测试输入&#xff1a;

2
zhangsan,lisi,wangwu,zhaoliu,qianqi
预期输出&#xff1a;

zhangsan 的试卷已阅
wangwu 的试卷已阅
zhaoliu 的试卷已阅
qianqi 的试卷已阅

absencenum &#61; int(input())
studentname &#61; []
inputlist &#61; input()
for i in inputlist.split(&#39;,&#39;):result &#61; istudentname.append(result)
count &#61; 0
#请在此添加代码&#xff0c;填入循环遍历studentname列表的代码
#********** Begin *********#
for student in studentname:
#********** End **********#count &#43;&#61; 1if(count &#61;&#61; absencenum):#在下面填入continue语句#********** Begin *********#continue#********** End **********#print(student,"的试卷已阅")

第3关&#xff1a;循环嵌套

任务描述
在Python 中&#xff0c;除了while循环与for循环&#xff0c;还有循环嵌套。循环嵌套就是在一个循环体里嵌入另一个循环。以下场景便模拟了循环嵌套与跳出循环的现实场景&#xff1a;
在一次考试结束后&#xff0c;学校需要统计每位同学的考试总成绩。在这个场景中&#xff0c;我们先将所有同学组成一个序列&#xff0c;然后遍历每位同学。在遍历到每位同学时还要遍历每位同学的每门分数并进行计算&#xff0c;最后得出每位同学的总成绩。

本关的任务是让学习者学会使用循环嵌套。

相关知识
循环嵌套分为for循环嵌套和while循环嵌套。

for循环嵌套
for循环嵌套的基本形式为&#xff1a;

for iteration_var in sequence:
for iteration_var in sequence:
循环语句
例如&#xff1a;

for x in range(1,10):
for y in range(0,x):
result &#61; x &#43; y
print(result)
while循环嵌套
while循环嵌套的基本形式为&#xff1a;

while 判断条件&#xff1a;
while 判断条件&#xff1a;
循环语句
例如&#xff1a;

x &#61; 1
y &#61; 0
while x <10:
while y result &#61; x &#43; y
print(result)
y &#43;&#61; 1
x &#43;&#61; 1
y &#61; 0
如果您想了解更多循环嵌套的相关知识&#xff0c;请参考&#xff1a;[美] Katie Cunningham 著《 Python 入门经典》第三章。

编程要求
本关的编程任务是补全sumScore.py文件中的部分代码&#xff0c;具体要求如下&#xff1a;

当输入学生人数后&#xff0c;填入在for循环遍历学生的代码&#xff1b;

当输入各科目的分数后的列表后&#xff0c;填入for循环遍历学生分数的代码。

本关涉及的代码文件sumScore.py的代码框架如下:

studentnum &#61; int(input())
请在此添加代码&#xff0c;填入for循环遍历学生人数的代码
########## Begin ##########
########## End ##########
sum &#61; 0
subjectscore &#61; []
inputlist &#61; input()
for i in inputlist.split(’,’):
result &#61; i
subjectscore.append(result)
# 请在此添加代码&#xff0c;填入for循环遍历学生分数的代码
########## Begin ##########
########## End ##########
score &#61; int(score)
sum &#61; sum &#43; score
print(“第%d位同学的总分为:%d” %(student,sum))
测试说明
本文的测试文件是sumScore.py&#xff0c;具体测试过程如下&#xff1a;

平台自动编译生成sumScore.exe&#xff1b;

平台运行sumScore.exe&#xff0c;并以标准输入方式提供测试输入&#xff1b;

平台获取sumScore.exe输出&#xff0c;并将其输出与预期输出对比。如果一致则测试通过&#xff0c;否则测试失败。

以下是平台对src/step3/sumScore.py的样例测试集&#xff1a;
测试输入&#xff1a;

2
23,56,78,90
21,56,78,76,91
预期输出&#xff1a;

第0位同学的总分为:247
第1位同学的总分为:322

studentnum &#61; int(input())
#请在此添加代码&#xff0c;填入for循环遍历学生人数的代码
#********** Begin *********#
for student in range(studentnum):
#********** End **********#sum &#61; 0subjectscore &#61; []inputlist &#61; input()for i in inputlist.split(&#39;,&#39;):result &#61; isubjectscore.append(result)#请在此添加代码&#xff0c;填入for循环遍历学生分数的代码#********** Begin *********#for score in subjectscore:#********** End **********#score &#61; int(score)sum &#61; sum &#43; scoreprint("第%d位同学的总分为:%d" %(student,sum))

第4关&#xff1a;迭代器

任务描述
迭代器用来循环访问一系列元素&#xff0c;它不仅可以迭代序列&#xff0c;也可以迭代不是序列但是表现出序列行为的对象。本关的任务是让学习者理解与学会使用迭代器。

相关知识
迭代器的优点
迭代器访问与for循环访问非常相似&#xff0c;但是也有不同之处。对于支持随机访问的数据结构如元组和列表&#xff0c;迭代器并无优势。因为迭代器在访问的时候会丢失数据索引值&#xff0c;但是如果遇到无法随机访问的数据结构如集合时&#xff0c;迭代器是唯一访问元素的方式&#xff1b;

迭代器仅仅在访问到某个元素时才使用该元素。在这之前&#xff0c;元素可以不存在&#xff0c;所以迭代器很适用于迭代一些无法预先知道元素总数的巨大的集合&#xff1b;

迭代器提供了一个统一的访问集合的接口&#xff0c;定义iter()方法对象&#xff0c;就可以使用迭代器访问。

理解迭代器
可直接作用于for循环的数据类型如list、tuple、dict等统称为可迭代对象:Iterable。使用isinstance()可以判断一个对象是否是可迭代对象。例如&#xff1a;

from collections import Iterable
result &#61; isinstance([],Iterable)
print(result)
result &#61; isinstance((),Iterable)
print(result)
result &#61; isinstance(‘python’,Iterable)
print(result)
result &#61; isinstance(213,Iterable)
print(result)
结果为&#xff1a;

True
True
True
False
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。next()函数访问每一个对象&#xff0c;直到对象访问完毕&#xff0c;返回一个StopIteration异常。使用isinstance()可以判断一个对象是否是Iterator对象。例如&#xff1a;

from collections import Iterator
result &#61; isinstance([],Iterator)
print(result)
result &#61; isinstance((),Iterator)
print(result)
result &#61; isinstance((x for x in range(10)),Iterator)
print(result)
结果为&#xff1a;

False
False
True
所有的Iterable都可以通过iter()函数转化为Iterator。

定义迭代器
当自己定义迭代器时&#xff0c;需要定义一个类。类里面包含一个iter()函数&#xff0c;这个函数能够返回一个带next()方法的对象。例如&#xff1a;

class MyIterable:
def iter(self):
return MyIterator()
class MyIterator:
def init(self):
self.num &#61; 0
def next(self):
self.num &#43;&#61; 1
if self.num >&#61; 10:
raise StopIteration
return self.num
复制迭代器
迭代器当一次迭代完毕后就结束了&#xff0c;在此调用便会引发StopIteration异常。如果想要将迭代器保存起来&#xff0c;可以使用复制的方法:copy.deepcopy():x &#61; copy.deepcopy(y)&#xff0c;不可使用赋值的方法&#xff0c;这样是不起作用的。

如果您想了解更多迭代器的相关知识&#xff0c;请参考&#xff1a;[美] Wesley J.Chun 著《 Python 核心编程》第八章。

编程要求
本关的编程任务是补全ListCalculate.py文件中的部分代码&#xff0c;具体要求如下&#xff1a;

当输入一个列表时&#xff0c;填入将列表List转换为迭代器的代码&#xff1b;

填入用next()函数遍历迭代器IterList的代码。

本关涉及的代码文件ListCalculate.py的代码框架如下:

List &#61; []
member &#61; input()
for i in member.split(’,’):
result &#61; i
List.append(result)
请在此添加代码&#xff0c;将List转换为迭代器的代码
########## Begin ##########
########## End ##########
while True:
try:
# 请在此添加代码&#xff0c;用next()函数遍历IterList的代码
########## Begin ##########
########## End ##########
result &#61; int(num) * 2
print(result)
except StopIteration:
break
测试说明
本文的测试文件是ListCalculate.py&#xff0c;具体测试过程如下&#xff1a;

平台自动编译生成ListCalculate.exe&#xff1b;

平台运行ListCalculate.exe&#xff0c;并以标准输入方式提供测试输入&#xff1b;

平台获取ListCalculate.exe输出&#xff0c;并将其输出与预期输出对比。如果一致则测试通过&#xff0c;否则测试失败。

以下是平台对src/step4/ListCalculate.py的样例测试集&#xff1a;
预期输入&#xff1a;

5,6,7,8,9
预期输出&#xff1a;

10
12
14
16
18

List &#61; []
member &#61; input()
for i in member.split(&#39;,&#39;):result &#61; iList.append(result)
#请在此添加代码&#xff0c;将List转换为迭代器的代码
#********** Begin *********#
IterList &#61; iter(List)
#********** End **********#
while True:try:#请在此添加代码&#xff0c;用next()函数遍历IterList的代码#********** Begin *********#num &#61; next(IterList)#********** End **********#result &#61; int(num) * 2print(result)except StopIteration:break


推荐阅读
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • importjava.util.ArrayList;publicclassPageIndex{privateintpageSize;每页要显示的行privateintpageNum ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
author-avatar
mthp
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有