循环语句,那些Python编程必不可少的技能,吐血整理

liftword2周前 (12-14)技术文章11

带你走进 @ 机器人时代

Discover 点击上面蓝色文字关注我们


Python循环
中其实就是两种循环命令,看起来简单,要用好得要仔细研究一下,我们来看看第一种while循环的使用:

# while循环的用法
n = 1
# 当 n 小于5时会一直循环
while n <= 5 :
    print("n=", n)
    n += 1
print("循环结束!")

运行结果:
n= 1
n= 2
n= 3
n= 4
n= 5
循环结束!


看起来是不是很简单?我们再来看看另外一种循环:

#for循环的用法
for i in (1,2,3,4,5):
    print(i)
    
 运行结果:
1
2
3
4
5


是不是秒懂?

有时候,看起来越简单的东西功能越强大,我们来看看更多的应用:

a=0
for i in range(101):
    a+=i
print('1+2+...+100的结果是: ',a)

运行结果:
1+2+...+100的结果是:  5050


Python
为我们提供了一种功能更加强大的写法,如果我们想逐行打印1-5的平方:

[print(i*i) for i in range(1,6)]

运行结果:
1
4
9
16
25


一行代码搞定!这就是Python比较强大的列表推导式,它同样支持双重循环:

#简化前的写法:
d = []
for x in range(3):
    for y in range(2):
        d.append((x, y))
print('未简化的程序输出:')
print(d)

#简化后的写法:
print('列表推导式的输出:')
print([(x,y) for x in range(3) for y in range(2)])

运行结果:
未简化的程序输出:
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]
列表推导式的输出:
[(0, 0), (0, 1), (1, 0), (1, 1), (2, 0), (2, 1)]


看起来是不是很高级?还可以加入if语句,我们来看一个例子:

#将可以整除的数字配对
s= [30, 12, 66, 34, 39, 78, 36, 57, 121]
b = [3, 5, 7, 11]
# 只要y能整除x,就将它们配对在一起
r = [(x, y) for x in b for y in s if y % x == 0]
print(r)

运行结果:
[(3, 30), (3, 12), (3, 66), (3, 39), (3, 78), (3, 36), (3, 57), (5, 30), (11, 66), (11, 121)]

如果采用传统的写法是这样的:

#将可以整除的数字配对
s= [30, 12, 66, 34, 39, 78, 36, 57, 121]
b = [3, 5, 7, 11]
r=[]
for x in b:
    for y in s:
        # 只要y能整除x,就将它们配对在一起
        if y%x==0:
            r.append((x,y))
print(r)

运行结果:
[(3, 30), (3, 12), (3, 66), (3, 39), (3, 78), (3, 36), (3, 57), (5, 30), (11, 66), (11, 121)]


可以看出,列表推导式是一种非常先进的写法。

那么,for循环如何遍历字典呢?我们来看看:

#遍历字典
d={'张三': 11, '李四': 12, '王五': 13}
n = {print(x,y) for x,y in d.items()}

运行结果:
张三 11
李四 12
王五 13


这里可以看出,遍历字典的时候,我们需要两个变量,一个用来读取键,另一个用来读取键值。当然根据需要,也可以只读取其中一项。

值得注意的是,我们可以使用while和for来进行嵌套实现某些功能:

#循环嵌套
i = 0
while i<3:
    [print("i=",i," j=",j)  for j in range(2)]
    i=i+1

运行结果:
i= 0  j= 0
i= 0  j= 1
i= 1  j= 0
i= 1  j= 1
i= 2  j= 0
i= 2  j= 1


在计算机编程中,有一种重要的算法,叫冒泡排序。之所以叫做冒泡排序,因为每一个元素都可以像小气泡一样,根据自身大小一点一点向数组的一侧移动。

我们来看一段代码,利用双重循环来实现冒泡排序的效果:

#实现冒泡排序
n = [2,4,1,3]
for i in range(len(n)-1):
    for j in range(len(n)-i-1):
        if(n[j]>n[j+1]):
            #两个元素比较,根据结果交换
            n[j],n[j+1] = n[j+1],n[j]
print("排序后:",n)

运行结果:
排序后:[1, 2, 3, 4]


在编写循环代码的过程中,难免会遇到不小心弄成死循环的局面。

虽然在调试的过程中,可以使用‘Ctrl+C’来中断程序运行,但正式发布时会造成程序的崩溃,因此,我们需要在适当的地方跳出循环,或者跳出进行下一次循环。

我们来看看break命令与continue命令的使用方法:

#将两个网址逐行打印,遇到$符号就中止
a = "https://www.baidu.com/,https://www.toutiao.com$这句话不要"
# 一个简单的for循环
for i in a:
    if i == ',' :
        # 碰到逗号换行,跳转到下一次循环
        print('\n下一个网址:')
        continue
    if i=='#39;:
        #碰到$符号直接跳出循环
        break
    print(i,end="")
    
 运行结果:
 https://www.baidu.com/
下一个网址:
https://www.toutiao.com


最后,我们来看一下在循环流程中经常会配合使用的几个功能强大的函数:zip函数、reversed函数、sorted函数的应用。

我们先来看一下zip()函数

c = {1:'a',2:'b',3:'c'}
[print(i)for i in zip(c)]
运行结果:
(1,)
(2,)
(3,)
c = {1:'a',2:'b',3:'c'}
# [print(i)for i in zip(c)]
a={'张三','李四','王五'}
print([x for x in zip(c,a)])
运行结果:
[(1, '李四'), (2, '张三'), (3, '王五')]


可以看出,在使用 zip() 函数“压缩”多个序列时,它会分别取各序列中第 1 个元素、第 2 个元素、... 第 n 个元素,各自组成新的元组。

需要注意的是,当多个序列中元素个数不一致时,会以最短的序列为准进行压缩。

reversed函数:说简单点就是可以返回一个逆序排序的迭代器:

print([i for i in reversed([5,4,3,2,1])])
运行结果:
[5, 4, 3, 2, 1]


sorted函数:是一个可以生成排序的列表的功能:

print([i for i in sorted([5,2,3,4,1],reverse=False)])
print([i for i in sorted([9,6,8,5,7],reverse=True)])

运行结果如下:
[1, 2, 3, 4, 5]
[9, 8, 7, 6, 5]


可以看出:reverse参数决定了排序的方式。

坚持学习,每天都能进步一点点!!

往期回顾:

  • 来来来,送你一个金牌销售机器人,7X24小时不休,不要工资免费用!
  • RPA技术在旅行社销售业务中如何凤凰涅槃??
  • 【工资翻三倍】系列:一招搞定九宫图片切割机器人,让你的朋友圈更加炫酷!


本文引用和摘录相关内容,请联系侵删。

- END -


最后,文章有帮助到你的话点赞在看
励我们分享更多的干货!

相关文章

Python之数据输出:你真的会用print函数吗

引言在前一篇关于Python文章的结尾,简单提到了关于print()函数的用法。似乎有不少新手、甚至已经用Python好长时间的老手,都对print()函数有一个刻板的印象,觉得print()函数就是...

13_ Python基础到实战一飞冲天(二)-python基础(十三)--循环2

# 13_ Python基础到实战一飞冲天(二)-python基础(十三)--循环2与九九乘法表案例## 一、break和continue-02-break代码演练### 1、 break1)**在循...

Python自动操作 GUI 神器——PyAutoGUI

作者:闲欢来源:Python 技术我们以前讲过怎样使用 Python 在浏览器中实现页面自动化操作,不管用哪种方式实现,都是通过定位页面中的元素来进行相应的操作。今天我们来聊一聊如何在桌面实现自动化操...

python 中的第一个 hello world 程序输出

程序运行:print("hello world")我使用的是Python程序3.7.0 版本介绍下print 概念print 字面意思打印,将文本输出内容打印出来输入: print(&...

简单又有趣,在Python中快速输出乘法表

在Python中,可以借助简单的循环操作实现九九乘法表的打印。该案例运行结果如下图所示。乘法表的打印实现结果【主体设计】实现乘法表的打印的流程图如下图所示。乘法表的打印流程图乘法表的输出流程从开始到结...

python教程从基础到精通,第3课-- Python的输入输出

请记住python的几个特点:Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在Python中,变量就是变量,它没有类型,我们所说的“类型”是变量所指的内存...