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

《笨方法学Python》加分题33

while-leep和我们接触过的for-loop类似,它们都会判断一个布尔表达式的真伪。也和for循环一样我们需要注意缩进,后续的练习会偏重这方面的练习。不同点在于while循环在执行

while-leep 和我们接触过的 for-loop 类似,它们都会判断一个布尔表达式的真伪。也和 for 循环一样我们需要注意缩进,后续的练习会偏重这方面的练习。不同点在于 while 循环在执行完代码后会再次回到 while 所在的位置,再次判断布尔表达式的真伪,并再次执行代码,直到手动关闭 python 或表达式为假。在使用 while 循环时要注意:

尽量少用 while 循环,大部分情况下使用 for 循环是更好的选择。
重复检查你的 while 循环,确定布尔表达式最终会成为 False。
如果不确定,就在 while 循环的结尾打印要测试的值。看看它的变化。
加分练习
将这个 while 循环改成一个函数,将测试条件 (i <6) 中的 6 换成变量。
使用这个函数重写脚本,并用不同的数字测试。
为函数添加另一个参数,这个参数用来定义第 8 行的加值 +1 ,这样你就可以让它任意加值了。
再使用该函数重写一遍这个脚本,看看效果如何。
接下来使用 for 循环 和 range 把这个脚本再写遍。你还需要中间的加值操作么?如果不去掉会有什么结果?
如果程序停不下来,可是试试按下 ctrl + c 快捷键。

33.0 基础练习

 1 i = 0
 2 numbers = []
 3 
 4 while i <6:
 5     print(f"At the top i is {i}")
 6     numbers.append(i)
 7 
 8     i = i + 1
 9     print("Numbers now: ", numbers)
10     print(f"At the bottom i is {i}")
11 
12 
13 print("The numbers: ")
14 
15 
16 for num in numbers:
17     print(num)

可见,while 循环在未执行完的时候,后面得 for 循环是无法执行的,所以千万确定 while 循环会结束。

33.1 - 33.4 用函数重写脚本

第一次修改:

 1 def my_while(loops):
 2     i = 0
 3     numbers = []
 4 
 5     while i < loops:
 6         print(f"At the top i is {i}")
 7         numbers.append(i)
 8 
 9         i += 1
10         print("Numbers now: ", numbers)
11         print(f"At the bottom i is {i}")
12 
13 
14     print("The numbers: ")
15 
16     for num in numbers:
17         print(num)
18 
19 
20 my_while(6)

 

 

第二次修改,增加步长

 1 def my_while(loops,step):
 2     i = 0
 3     numbers = []
 4 
 5     while i < loops:
 6         print(f"At the top i is {i}")
 7         numbers.append(i)
 8 
 9         i += step
10         print("Numbers now: ", numbers)
11         print(f"At the bottom i is {i}")
12 
13 
14     print("The numbers: ")
15 
16     for num in numbers:
17         print(num)
18 
19 
20 my_while(6,2)

 

 

 

33.5 使用 for 循环和 range 重写代码

 

 1 numbers = []
 2 
 3 for i in range(6):
 4     print(f"At the top i is {i}")
 5     numbers.append(i)
 6     print("Numbers now: ", numbers)
 7     print(f"At the bottom i is {i}")
 8 
 9 print("The numbers: ")
10 
11 for num in numbers:
12     print(num)

 

这里就不需要 i 去加 1 了。 
因为在 while 循环中如果没有 i +=1 则布尔式中 i 是不变,i 永远小于 6,这就麻烦了。 
但在 for 循环中,循环次数受 range 控制,所以功能上是不需要 i 了。


推荐阅读
  • 假设我有两个数组A和B,其中A和B都是mxn.我现在的目标是,对于A和B的每一行,找到我应该在B的相应行中插入A的第i行元素的位置.也就是说,我希望将np.digitize或np. ... [详细]
  • 我正在用python构建纸牌游戏(与Dobbel类似,如果您知道的话)。游戏在纸牌组中 ... [详细]
  • 本文介绍了多维缩放(MDS)技术,这是一种将高维数据映射到低维空间的方法,通过保持原始数据间的关系,以便于可视化和分析。文章详细描述了MDS的原理和实现过程,并提供了Python代码示例。 ... [详细]
  • AI炼金术:KNN分类器的构建与应用
    本文介绍了如何使用Python及其相关库(如NumPy、scikit-learn和matplotlib)构建KNN分类器模型。通过详细的数据准备、模型训练及新样本预测的过程,展示KNN算法的实际操作步骤。 ... [详细]
  • OBS Studio自动化实践:利用脚本批量生成录制场景
    本文探讨了如何利用OBS Studio进行高效录屏,并通过脚本实现场景的自动生成。适合对自动化办公感兴趣的读者。 ... [详细]
  • 高级缩放示例.就像谷歌地图一样.它仅缩放图块,但不缩放整个图像.因此,缩放的瓷砖占据了恒定的记忆,并且不会为大型缩放图像调整大小的图像.对于简化的缩放示例lookhere.在Win ... [详细]
  • 本文探讨了在Python编程语言中,While循环与For循环的性能差异,通过实际测试数据解析两者在不同场景下的应用。 ... [详细]
  • 本文探讨了在处理大型字典时,如何通过优化字典理解和列表操作来提高代码执行效率。具体问题涉及从字典中筛选出特定条件下的条目。 ... [详细]
  • 本文介绍如何编写 Python 程序,以获取并显示字符串中每个字符的 ASCII 值。 ... [详细]
  • 本文详细介绍了HashSet类,它是Set接口的一个实现,底层使用哈希表(实际上是HashMap实例)。HashSet不保证元素的迭代顺序,并且是非线程安全的。 ... [详细]
  • pypy 真的能让 Python 比 C 还快么?
    作者:肖恩顿来源:游戏不存在最近“pypy为什么能让python比c还快”刷屏了,原文讲的内容偏理论,干货比较少。我们可以再深入一点点,了解pypy的真相。正式开始之前,多唠叨两句 ... [详细]
  • 关于进程的复习:#管道#数据的共享Managerdictlist#进程池#cpu个数1#retmap(func,iterable)#异步自带close和join#所有 ... [详细]
  • Python绘图示例:绘制蟒蛇
    本示例通过绘制蟒蛇图形,帮助读者理解Python的模块化编程思想。Python的名称来源于“蟒蛇”,因此用Python绘制蟒蛇图形非常有趣。 ... [详细]
  • 本文通过一个具体的案例,展示了如何使用 Python 爬虫技术从京东网站爬取手机的价格和参数。最近发布的 iPhone X 虽然价格昂贵,但不妨碍我们探索其他高性价比的国产手机。 ... [详细]
  • 本文介绍如何通过参数化查询来防止SQL注入攻击,确保数据库的安全性。示例代码展示了在C#中使用参数化查询添加学生信息的方法。 ... [详细]
author-avatar
水源水足
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有