Python小白零基础入门 —— 条件语句和循环语句

Stella981
• 阅读 711

Python小白零基础入门 —— 条件语句和循环语句

点击上方“Python读数”,选择“星标”公众号
重磅干货,第一时间送达
Python零基础入门的第五篇文章,给大家介绍一下Python中的条件语句和循环语句。

条件语句

编程时经常需要检查一系列条件,并据此决定采取什么措施。比如说,判断一个用户是男性还是女性,判断一个用户所在的年龄区间。

在Python中,if语句让你能够检查程序的当前状态,并据此采取相应的措施(和Excel中的条件语句是类似的)。条件语句的执行过程可以图解如下(以一个判断条件为例):
Python小白零基础入门 —— 条件语句和循环语句

Python中if语句的一般形式如下:

if cond_1:      
    statement_block_1

elif cond_2:
    statement_block_2

else:
    statement_block_3
  • 当cond_1为True时,执行statement_block_1

  • 如果cond_1为False则不执行statement_block_1,进入cond_2的判断

  • 如果cond_2为True,执行statement_block_2,否则,执行statement_block_3
    举个小例子,判断一个用户的性别,如果gender为'male'则打印输出'男性',如果gender为'female'则打印输出'女性':

    In [1]: gender = 'male'

    In [2]: if gender == 'male': ...: print("男性") ...: ...: elif gender == 'female': ...: print("女性") 男性

相信整个if-else的过程并不难理解,大家可以尝试着写更复杂的条件语句。

循环语句

在Python中,循环语句可以分类两大类,一类是for循环,一类是while循环,下面就分别介绍一下这两种循环的使用方式。

for 循环
for循环可以遍历任何序列的项目,如一个列表或者一个字符串,遍历的意思就是把其中每个元素都过一遍。假如现在有一个需求,是打印列表[1,2,3,4,5]中的所有数字,这时便需要用到for循环,那么该怎么实现呢?

In [3]: alist = [1,2,3,4,5]
   ...: for number in alist:
   ...:     print(number)
1
2
3
4
5

为了让大家理解这过程中发生了什么,我特地制作了一个GIF,大家可以看看整个流程:
Python小白零基础入门 —— 条件语句和循环语句

在上面的for循环中,每一次循环从alist中按顺序取出一个数字,并将数值赋值给number这个变量,然后再执行for循环内的代码,这里是print出number。

当然,如果你纯粹的只想跑N次循环也是可以的,可以借助range()函数来实现。range(n)会生成一个0到n-1的序列,如下所示:

In [5]: list(range(5))
Out[5]: [0, 1, 2, 3, 4]

所以,当你有一段代码需要重复N次时(下面假设打印N次'Python'),可以这么写:

for i in range(N):
    print("Python")

for循环内可以实现的功能还有很多,就需要你结合自身的需求进行探索啦!

while循环

与for循环遍历完一个序列不同,while循环不断地运行(条件为True时),直到指定的条件不满足为止(条件转为False)。先来看看如何定义一个while循环:

while 判断条件(condition):
    执行语句(statements)

还是以一个例子来引入,现在生成一个变量a,使用循环每次给a加上2,直到a >= 10,实现的代码如下:

In [6]: a = 1
   ...: while a < 10:
   ...:     print(a)
   ...:     a = a + 2
1
3
5
7
9

上述代码执行流程是这样子的:
Python小白零基础入门 —— 条件语句和循环语句

可以看到,当a为1,3,5,7,9时,while循环一直在执行,当a加到11时,a<10的结果为False,循环终止。

有的小伙伴可能会问,如果在执行循环的过程中,让程序实现达到某个条件时中断该怎么操作,这时便需要关键字break和continue出马了。

break和continue

break:退出循环,往下执行相关代码

continue:返回循环的开头,判断是否继续执行循环

还是刚才的while循环,我们做个变体,令a=5时跳出循环

In [8]: a = 1
   ...: while a < 10:
   ...:     print(a)
   ...:     a = a + 2
   ...:     if a == 5:
   ...:         break
1
3

可以看到,当a=5时,循环终止了。把上述代码中的break再换成continue又会发生什么呢?

In [9]: a = 1
   ...: while a < 10:
   ...:     print(a)
   ...:     a = a + 2
   ...:     if a == 5:
   ...:         continue
   ...:
1
3
5
7
9

好像和不加continue之前的结果是一样的,这是因为,当a=5时,执行了continue,则循环回到了开头while a <10:,此时a<10返回的结果是True,故而while循环继续运行。break和continue的运行图示如下:
Python小白零基础入门 —— 条件语句和循环语句

break.png
其实不论条件语句if-else,还是循环语句for和while理解起来都不是很难,相信大家都能够轻松搞定,下面也是准备了一些练习题以巩固练手。

练习题

1.使用for循环从1-100中筛选出奇数,并打印
2.使用for循环从1-100中筛选出质数,并打印
3.使用while循环从列表[1,2,3,4,1,2,1,1,1,1]中删除所有的1

往期精彩回顾

Python小白零基础入门 —— 变量及简单的数据类型

Python小白零基础入门 —— 列表和元组

Python小白零基础入门 —— 字典

Python小白零基础入门 —— 集合(set)

关注我
Python小白零基础入门 —— 条件语句和循环语句
1529321439513643.jpg
公众号:Python读数

一个记录成长的公众号
原创不易,如果觉得有点用,希望可以随手转发或者 ”在看“ ,拜谢各位老铁。

点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Jacquelyn38 Jacquelyn38
2年前
2020年前端实用代码段,为你的工作保驾护航
有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )
皕杰报表之UUID
​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为
Stella981 Stella981
2年前
Python3:sqlalchemy对mysql数据库操作,非sql语句
Python3:sqlalchemy对mysql数据库操作,非sql语句python3authorlizmdatetime2018020110:00:00coding:utf8'''
Stella981 Stella981
2年前
Python之time模块的时间戳、时间字符串格式化与转换
Python处理时间和时间戳的内置模块就有time,和datetime两个,本文先说time模块。关于时间戳的几个概念时间戳,根据1970年1月1日00:00:00开始按秒计算的偏移量。时间元组(struct_time),包含9个元素。 time.struct_time(tm_y
Stella981 Stella981
2年前
Docker 部署SpringBoot项目不香吗?
  公众号改版后文章乱序推荐,希望你可以点击上方“Java进阶架构师”,点击右上角,将我们设为★“星标”!这样才不会错过每日进阶架构文章呀。  !(http://dingyue.ws.126.net/2020/0920/b00fbfc7j00qgy5xy002kd200qo00hsg00it00cj.jpg)  2
Stella981 Stella981
2年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
可莉 可莉
2年前
200的大额人民币即将面世?央行:Yes!
点击上方蓝字关注我们!(https://oscimg.oschina.net/oscnet/2a1c2ac00bf54458a78c48a6c2e547d5.png)点击上方“印象python”,选择“星标”公众号重磅干货,第一时间送达!!(
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
3个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这