Python基础之控制流语句

1.代码块的缩进

代码块是一组语句,可在满足条件下执行。Python中代码块可通过缩进代码(即在前面加空格)来创建的,且每级缩进4个空格。这和C语言中使用大括号{}的方式不同,而且Python中使用冒号(:) 指出接下来是一个代码块。

2.条件和条件语句
2.1 布尔值

用作布尔表达式(如用if语句中的条件)时,下面的值都将被解释器视为

FalseNone0 、 ” ” 、 ( )[ ]{ } 

换而言之,标准值False 和None、各种类型(包括浮点数、负数等)的数值0、空序列(如空字符串、空元组和空列表)以及空映射(如空字典)都视为假。而其他各种值都被视为真,包括特殊值True。
在有些语言。比如c语言中,标准真值0(表示)和1(表示)。实际上,python中 TrueFalse不过是0和1的别名

>>> True
True
>>> False
False
>>> True == 1
True
>>> False ==0
True
>>> True  + False + 42
43
2.2 if 语句
>>> num = 1
>>> if num == 1:
...     print("hello,world")
...
hello,world

if和冒号之间的表达式(条件按) 为 真,就执行后续的代码(即print代码);
如果条件为假,就不执行。

2.3 else 语句

else所起的作用为除if(如果)以外,还有其他选择,else不是单独的一部分,与if的语句是同一个部分。

>>> num = 1
>>> if num < 10:
...     print("num < 10;")
... else:
...     print("num >= 10;")
...
num < 10;
2.4 条件表达式

C语言中三目预算符的Python版本。

x = 1 < 2? 1 : 2;  # c语言版本

Python中实现类似IF-ELSE结构的赋值操作:

>>> name = 'Mr. Jack'
>>> status = 'friend' if name.endswith('Jack') else 'stranger'
>>> status
'friend'
2.5 elif 语句

要检查多个条件,可使用elif ,即else if的缩写。

>>> num = int(input('Number: '))
>>> if num > 0:
>>>     print("正整数")
>>> elif num < 0:
>>>     print("负整数")
>>> else:
>>>     print("0")
2.6 if 语句的嵌套使用

可以将if语句防砸其他if语句中发,如:

a = input("a:")
b = input("b:")
c = input("c:")
if(a > b):
    print (a,"大于",b)
    if(a>c):                    #注意这里的的if需要缩进,因为该if隶属于if(a>b)
        print(a,"大于",c)
    else:
        print(a,"小于",c)       #注意这里的if应该与if(a>c)缩进相同
2.7 编写条件

1.比较运算符
在条件表达式中,最基本的运算符可能是比较运算符,他们可以用于执行比较。

表达式描述
x == yx 等于 y
x < yx 小于 y
x > yx 大于 y
x <= yx 不大于 y
x >= yx 不小于 y
x != yx 不等于 y
x is yx 和 y 是同一个对象
x is not yx 和 y 是不同的对象
x in yx 是容器 y 的成员
x not in yx 不是容器 y 的成员

注,与链式赋值类似,Python支持链式比较,如0 < num < 10。

2.布尔运算符
Python中中表示条件""、“”、“"的关键字是"and”、“or”、“not”,这与c语言中的"&&"、"||"、"!"作用一样。

3.循环
3.1 while 循环

在某一条件为真下反复执行代码块。

>>> x = 1
>>> while x < 5:
...     print(x)
...     x += 1
...
1
2
3
4
3.2 for 循环

为序列(或其他可迭代对象)中的每一个元素执行代码块

>>> w = ['hello','world','I','am','python']
>>> for x in w:
...     print(x)
...
hello
world
I
am
python

>>> numbers = [0,1,2,3,4]
>>> for n in numbers:
...     print(n)

可迭代对象是可用for循环进行遍历的对象。

鉴于迭代(遍历)特定范围内的数是一种常见任务,Python提供一个创建范围的内置函数range

>>> for n in range(0,5): # 指定起点、终点
...     print(n)
>>> for n in range(5): # 只指定终点
...     print(n)
...
0
1
2
3
4

列表推导

>>> [x*x for x in range(5)]
[0, 1, 4, 9, 16]
3.3 迭代

1.并行迭代

>>> names = ['jack','Ammy','Steven','Make']
>>> ages = [21,22,23,24]
>>> for i in range(len(names)):
>>>     print(names[i],'is',ages[i],'years old')

i是用作循环索引变量的标准名称。


也可以使用内置函数zip,两个序列“缝合起来”,并返回一个元组组成的序列。返回值是一个适合迭代的对象,要查看内容,是用list转换为列表。

>>> a=["lucy","lily","tom"]
>>> b=[11,12,13]
>>> print(list(zip(a,b)))
[('lucy', 11), ('lily', 12), ('tom', 13)]

"缝合"后,可在循环中将元组解包。

>>> ta = [1,2,3]
>>> tb = [9,8,7]
>>> tc = ['a','b','c']
>>> for (a,b,c) in zip(ta,tb,tc):
...     print(a,b,c)
...
1 9 a
2 8 b
3 7 c

zip可以缝合任意数量的序列,当序列长度不同时,函数zip将在最短的序列用完后停止“缝合”。


使用内置函数enumerate,在迭代同时获取索引,即同时获得下表和元素。

>>> S = 'abcde'
>>> for (index,char) in enumerate(S):
...     print(index,char)
...
0 a
1 b
2 c
3 d
4 e
3.4 跳出循环

1.break
要跳出循环可以用break。

>>> numbers=[1,2,3,4,5]
>>> for number in numbers:
...     if number == 3:
...         print("截至到数字3")
...         break
...     print(number)
...
1
2
截至到数字3

2.continue
结束当前迭代,并跳到下一次迭代的开头,意味着跳过循环体中余下的语句,但不结束循环。

>>> numbers=[1,2,3,4,5]
>>> for number in numbers:
...     if number == 3:
...         print("跳过数字3")
...         continue
...     print(number)
...
1
2
跳过数字3
4
5

注意,在while和for循环中,可以使用else子句,它尽在没有调用break时才执行。

>>> numbers=[1,2,3,4,5]
>>> for number in numbers:
...     if number == 2:
...         print("截至到数字2")
...         break
...     print(number)
... else:
...     print("顺利执行完毕")
...
1
截至到数字2
>>> numbers=[1,2,3,4,5]
>>> for number in numbers:
...     if number == 2:
...         print("跳过数字2")
...         continue
...     print(number)
... else:
...     print("顺利执行完毕")
...
1
跳过数字2
3
4
5
顺利执行完毕
4.什么都不做

因为在Python中代码块不能为空,所以在有些时候我们可以用语句pass表示什么都不做,充当占位符,方便以后补充,例如在if-else语句中。

参考资料

1.Beginning Python From Novice to Professional Third Edition. Magnus Lie Hetland
2.Python标准英文文档

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值