条件语句
1.if语句
if expression:
expr_true_suite
- if语句的expr_true_suite代码块只有当条件表达式expression结果为真时才执行,否则将继续执行紧跟在该代码块后面的语句。
- 单个if语句中的expression条件表达式可以通过布尔操作符and,or和not实现多重条件判断。
num = int(input("输入一个数字:"))
if num % 3 == 0:
print("你输入的数字可以整除数字3")
2.if-else语句
if expression:
expr_true_suite
else:
expr_false_suite
- if搭配使用else关键字,如果if语句的条件表达式结果布尔值为假,那么程序将执行else语句后的代码。
temp = input("猜一猜小姐姐想的是哪个数字?")
guess = int(temp) # input函数将接收的任何数据类型都默认为str。
if guess == 666:
print("你太了解小姐姐的心思了!")
print("哼,猜对也没有奖励!")
else:
print("猜错了,小姐姐现在心里想的是666!")
print("游戏结束,不玩儿啦!")
- if语句支持嵌套,即在一个if语句中嵌入另一个if语句,从而构成不同层次的选择结构。
proof = int(input("输入驾驶员每 100ml 血液酒精的含量:"))
if proof < 20:
print("驾驶员不构成酒驾")
else:
if proof < 80:
print("驾驶员已构成酒驾")
else:
print("驾驶员已构成醉驾")
3.if-elif-else语句
if expression1:
expr1_true_suite
elif expression2:
expr2_true_suite
.
.
elif expressionN:
exprN_true_suite
else:
expr_false_suite
- elif语句即为else if,用来检查多个表达式是否为真,并在为真时执行特定代码块中的代码。
# 根据学生成绩来评优良差等级
if a > 90: # 大于90
print('优')
elif a > 80: # 90-80因为上一句已经把大于90的排除了
print('良')
elif a > 70:
print('中')
elif a > 60:
print('及格')
else:
print('差')
注意:
- 每个条件后面要使用冒号“:”,表示接下来是满足条件后要执行的语句块。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 在Python中没有switch–case语句。
4.assert关键词
- assert这个关键词我们称之为“断言”,当这个关键词后边的条件为False时,程序自动崩溃并抛出AssertionError的异常。
- 断言可以在条件不满足程序运行的情况下直接返回错误,而不必等待程序运行后出现崩溃的情况。
import sys
assert ('win32' in sys.platform), "该代码只能在Windows下执行"
# 接下来要执行的代码
循环语句
1.while循环
- while语句最基本的形式包括一个位于顶部的布尔表达式,一个或多个属于while代码块的缩进语句。
while 布尔表达式:
代码块
- while循环的代码块会一直循环执行,直到布尔表达式的值为布尔假。
- 如果布尔表达式不带有<、>、==、!=、in、not in 等运算符,仅仅给出数值之类的条件,也是可以的。当while后写入一个非零整数时,视为真值,执行循环体;写入0时,视为假值,不执行循环体。也可以写入str、list或任何序列,长度非零则视为真值,执行循环体;否则视为假值,不执行循环体。
- 在Python中没有do…while循环。
n = 100
sum = 0
counter = 1
while counter <= n:
sum = sum + counter
counter += 1
print("1 到 %d 之和为: %d" % (n,sum))
2.while-else循环
while 布尔表达式:
代码块
else:
代码块
- 当while循环正常执行完的情况下,执行else输出,也就是布尔表达式为false时执行else的语句块,如果while循环中执行了跳出循环的语句,比如break,将不执行else代码块的内容。
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
count = 0
while count < 5:
print("%d is less than 5" % count)
count = 6
break
else:
print("%d is not less than 5" % count)
# 0 is less than 5
3.for循环
- for循环是迭代循环,在Python中相当于一个通用的序列迭代器,可以遍历任何有序序列,如str、list、tuple等,也可以遍历任何可迭代对象,如dict。
- 每次循环,迭代变量被设置为可迭代对象的当前元素,提供给代码块使用。
for 迭代变量 in 可迭代对象:
代码块
languages = ["C", "C++", "Perl", "Python"]
for x in languages:
print (x, end=' ')
# C C++ Perl Python
dic = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
for key, value in dic.items():
print(key, value, sep=':', end=' ')
print(key, end=' ')
print(value, end=' ')
# a:1 b:2 c:3 d:4
# a b c d
# 1 2 3 4
4.for-else循环
for 迭代变量 in 可迭代对象:
代码块
else:
代码块
- 当for循环正常执行完的情况下,执行else输出,如果for循环中执行了跳出循环的语句,比如 break,将不执行else代码块的内容,与while-else语句一样。
# 字符串
strs = "Hello World."
for i in strs:
print(i,end=" ")
# H e l l o W o r l d . 运行OK
else:
print("运行OK")
print()
# 列表
lst = [1,2.3,8+9j,'abc',(4,5),{7,8,'a'},{'a':4}]
for i in lst:
print(i,end=" ")
# 1 2.3 (8+9j) abc (4, 5) {8, 'a', 7} {'a': 4} 运行OK
else:
print("运行OK")
print()
# 元组
tup = (1,2,3,4,5,6)
for i in tup:
print(i,end=" ")
# 1 2 3 4 5 6 运行OK
else:
print("运行OK")
print()
# 字典
dic = {'a':{'b':123},(4,5):'str',123:[4,5,6]}
# 键为不可变类型 字符串、元组、数字
for i in dic:
print(i,end=" ")
# a (4, 5) 123 运行OK
else:
print("运行OK")
print()
# 集合
set_1 = {1,2.5,'a',(7,8,9)}
for i in set_1:
print(i,end=" ")
# 1 2.5 a (7, 8, 9) 运行OK
else:
print("运行OK")
print()
5.range()函数
range([start,] stop[, step=1])
- 这个BIF(Built-in functions)有三个参数,其中用中括号括起来的两个表示这两个参数是可选的。
- step = 1,步长,表示第三个参数的默认值是1。
- range 这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列,该序列包含start的值但不包含stop的值。
for i in range(3, 7): # 不包含7
print(i)
for i in range(1, 20, 4):
print(i)
6.enumerate()函数
enumerate(sequence, [start=0])
- enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在for循环当中。
- sequence:一个序列、迭代器或其他支持迭代对象。
- start:下标起始位置。
- 返回 enumerate(枚举) 对象
seasons = ['Spring', 'Summer', 'Fall', 'Winter']
lst = list(enumerate(seasons))
print(lst)
# [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
lst = list(enumerate(seasons, start=1)) # 下标从 1 开始
print(lst)
# [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
- enumerate()与 for 循环的结合使用。
for i, a in enumerate(A)
do something with a
seq = ['one', 'two', 'three']
for i, element in enumerate(seq):
print(i, element)
print('Done!')
7.break语句
- break语句可以跳出当前所在层的循环。
for letter in 'Python':
if letter == 'h':
break
print('当前字母 :', letter)
8.continue语句
- continue终止本轮循环并开始下一轮循环。
# 只打印0-10之间的奇数
n = 0
while n < 10:
n = n + 1
if n % 2 == 0: # 如果n是偶数,执行continue语句
continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行
print(n)
9.pass语句
- pass语句的意思是“不做任何事”,如果你在需要有语句的地方不写任何语句,那么解释器会提示出错,而pass语句就是用来解决这些问题的。
def function():
# 在Python3.x的时候pass可以写或不写
pass
10.推导式
-
Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
-
列表推导式
[ expr for value in collection [if condition] ]
x = [-4, -2, 0, 2, 4]
y = [a * 2 for a in x]
print(y)
# [-8, -4, 0, 4, 8]
x = [i ** 2 for i in range(1, 10)]
print(x)
# [1, 4, 9, 16, 25, 36, 49, 64, 81]
x = [(i, i ** 2) for i in range(6)]
print(x)
# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]
x = [i for i in range(100) if (i % 2) != 0 and (i % 3) == 0]
print(x)
# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]
a = [(i, j) for i in range(0, 3) for j in range(0, 3)]
print(a)
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
x = [[i, j] for i in range(0, 3) for j in range(0, 3)]
print(x)
# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
x[0][0] = 10
print(x)
# [[10, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
a = [(i, j) for i in range(0, 3) if i < 1 for j in range(0, 3) if j > 1]
print(a)
# [(0, 2)]
- 元组推导式
( expr for value in collection [if condition] )
a = (x for x in range(10))
print(a)
# <generator object <genexpr> at 0x0000025BE511CC48>
print(tuple(a))
# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
- 字典推导式
{ key_expr: value_expr for value in collection [if condition] }
b = {i: i % 2 == 0 for i in range(10) if i % 3 == 0}
print(b)
# {0: True, 3: False, 6: True, 9: False}
- 集合推导式
{ expr for value in collection [if condition] }
c = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}
print(c)
# {1, 2, 3, 4, 5, 6}
- 其它
- 内置函数next(iterator[, default]),返回迭代子下一个元素的值,主要通过调用__next__()方法来实现的。如果default参数有设置,当下一个元素不存在时,就返回default参数的值,否则抛出异常StopIteration。
e = (i for i in range(10))
print(e)
# <generator object <genexpr> at 0x0000007A0B8D01B0>
print(next(e)) # 0
print(next(e)) # 1
for each in e:
print(each, end=' ')
# 2 3 4 5 6 7 8 9