概述
Python流程控制语句
2021/6/8 周二
学习内容: if-elif-else条件语句、while循环、for循环、break和continue、pass语句、end关键字
刚接触Python,主要是看 菜鸟教程、w3school 网站,以及电子工业出版社出版的Python编程入门指南上册的教材,并根据自己的情况对重点内容做的笔记。
如有错误,欢迎在评论区指出,非常感谢!
Python里流程控制语句的写法与Java很不同:
- 没有{ }花括号,而是用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块;
- 条件不需要用 () 小括号括起来;
- 每个条件后面要使用 : 冒号,表示接下来是满足条件后要执行的语句块。
一、if条件控制语句
在Python中只有 if 语句,没有像Java一样的 switch…case 语句。
1. 完整语法
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
elif condition_3:
statement_block_3
···
else:
statement_block_4
elif 就相当于Java中的 else if,可以有多个。
不需要的情况下,elif 和 else 可以都省略,或者省略其中一个。
condition 条件可以由多个条件组合而成,比如用逻辑运算符 and 或 or 连接两个条件:
a,b = 5,10
c = 8
if c>=a and c<=b:
print("in")
elif c<a or c>b:
print("out")
2. 简写
如果只有一条语句要执行,则可以将其与 if 语句放在同一行:
a = 1
if a>0: print(a)
简写的语法冒号后面有无空格都可以。
如果有 if 和 else 两个条件,也可以放在同一行写:
a = -1
if a>0:
b = a
else:
b = -a
print(b)
>>> 将中间4行简写:
b = a if a>0 else -a
这种写法需要注意,if 的语序变换了,而且去掉了条件后面的冒号。
另外,这样简写的一行是一个条件表达式,是有返回值的,可以直接赋值给b,比上面的写法简洁很多。
如果有多个条件,同样可以简写到一行并且拥有返回值:
s = 88
if s<60:
str = "D"
elif s<70:
str = "C"
elif s<90:
str = "B"
elif s<100:
str = "A"
print(str)
>>> 将条件语句简写:
str = "D" if s<60 else "C" if s<70 else "B" if s<90 else "A"
这里需要注意的是:
- 最后一条语句不能带条件,否则会报无效语句错误(相当于是简写只能用if-elif-···-else的逻辑,不能是if-elif-···)
- 但是又没有用到 elif 关键字,而是相当于拆成else if来写(否则既要写条件又要写执行语句,elif一个关键字带不了)
3. 嵌套
与Java一样,语句也可以嵌套,可以在 if 语句中包含 if 语句:
s = 88
if s>=60:
if s<70: str = "C"
elif s<90: str = "B"
else: str = "A"
else:
str = "D"
print(str)
4. pass 语句
if 执行的语句不能为空,否则会报错【IndentationError: expected an indented block】
但是如果碰到某个条件确实不用执行什么内容,可以使用 pass 语句来避免错误:
a,b = 1,2
if a != b:
pass
在循环语句中也可以使用pass。
二、while循环
while循环是只要条件满足就会一直重复的循环,因此被称为条件循环。
另外,在Python中只有 while 循环,没有像Java一样的 do…while 循环。
1. 一般形式
while condition:
statements
只要condition条件为真,就可以执行statements语句。
如果condition一直为真,就会是无限循环。
2. break和continue
类似Java的循环语句,Python种也有break和continue语句
只要碰到了break语句,就可以立即停止循环。
break可以与无限循环搭配使用,当循环到自己需要的内容时停止循环:
a = 1
while a>0:
if a == 100:
print(a)
break
a += 1
而continue则是表示,立即停止当次循环并进入到下一次循环,continue后面所有属于这次循环的内容被跳过。
例如输出1-9的奇数:
a = 0
while a<10:
a += 1
if a%2 == 0:
continue
print(a)
当a除以2余数为0时,直接跳过print()方法进入下一次循环了。
3. else语句
while循环也可以使用else语句,当条件不再成立时,会执行一次else里的代码块:
a = 0
while a<10:
a += 1
if a%2 == 0:
continue
print(a)
else:
print("The end.")
else语句也是属于 while 循环语句的,如果是使用break跳出循环了,不会再执行else。
所以else语句可以用来区别一个循环是全部计数完停止的,还是被break停止的。
三、for循环
Python中的 for 循环用于遍历序列(即列表,元组,字典,集合或字符串)。
这与Java的 for 循环不太相似,更像for-each循环。
因为for循环一般是已知次数的(也就是遍历对象的长度),所以又被成为计次循环。
1. 一般形式
for variable in sequence:
statements
else:
statements
其中variable是迭代变量,sequence为要遍历的对象,statements为被重复执行的语句。
for循环也有else语句可以指定循环结束时执行的代码块,不需要也可以省略。
以及和while循环一样,for也有break和continue语句,用法一样。
之前说过Set集合无法访问某个元素,但可以使用 for 循环来遍历到每个元素:
myset = {1,2,3,4,5}
for x in myset:
if x%2 == 0:
print(x)
>>> 输出:
>>> 2
>>> 4
如果是字典的话,则还需要用到 items() 函数:
mydict = {"A":"Apple","B":"Ball","C":"Car"}
for k,v in mydict.items():
print(k+" for "+v)
>>> 输出:
>>> A for Apple
>>> B for Ball
>>> C for Car
2. end 关键字
关键字end可以用于将结果输出到同一行,还可以在输出的末尾添加不同的字符,实例如下:
a, b = 0, 1
while b < 1000:
print(b, end=', ')
a, b = b, a+b
>>> 输出(斐波那契数列):
>>> 1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,
这样比每循环一次输出一行要美观很多。
end关键字不只在循环中适用。
3. range() 函数
range() 是Python的内置函数,返回一个数字序列,多用于for循环语句中循环一组代码指定的次数。
range()默认情况下0开始,默认递增1,并以指定的数字结束:
for x in range(10):
print(x, end = " ")
>>> 输出:
>>> 0 1 2 3 4 5 6 7 8 9
range(10) 指0到9,不包括10。
也可以指定起始值:
for x in range(3, 10):
print(x, end = " ")
>>> 输出:
>>> 3 4 5 6 7 8 9
如果不想默认递增1,也可以通过添加第三个参数(步长)来指定增量值:
for x in range(3, 31, 3):
print(x, end = " ")
>>> 输出:
>>> 3 6 9 12 15 18 21 24 27 30
如果步长为负,则为递减。
4. 循环嵌套
for循环和while循环也都可以嵌套使用
for x in range(6, 0, -1):
print(str(x)+"楼", end = " ")
i = 0
while i<7:
i += 1
if i==4:
continue
print(str(x)+"0"+str(i), end = " ")
print("")
>>> 输出:
>>> 6楼 601 602 603 605 606 607
>>> 5楼 501 502 503 505 506 507
>>> 4楼 401 402 403 405 406 407
>>> 3楼 301 302 303 305 306 307
>>> 2楼 201 202 203 205 206 207
>>> 1楼 101 102 103 105 106 107
最后
以上就是义气高跟鞋为你收集整理的【Python】流程控制语句:if-elif-else条件语句、while循环、for循环、break和continue、pass语句、end关键字的全部内容,希望文章能够帮你解决【Python】流程控制语句:if-elif-else条件语句、while循环、for循环、break和continue、pass语句、end关键字所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复