控制流
条件语句
了解条件语句
普通条件判断
#普通条件判断
if a > 0:
print("positive")
else:
#嵌套判断
if a < 0:
print("negative")
else:
print("zero")
多条件判断
#多条件判断01 if elif else
#使用elif是互斥条件,只要if/elif条件成立,后面elif语句不执行,效率高
if a > 0:
print("positive")
elif a < 0:
print("negative")
else:
print("zero")
#多条件判断02 if if else
#使用连续if是独立条件,即使if条件成立,后面的if语句仍然运行,效率低
if a > 0:
print("positive")
if a < 0:
print("negative")
else:
print("zero")
三元(目)表达式
# 三元表达式01
"even" if a % 2 == 0 else "odd"
#三元表达式02
print("positive") if a > 0 else print("negative") if a < 0 else print("zero")
循环结构
可迭代对象
可迭代对象一次返回一个元素所以适用于循环。Python包括序列:字符串、列表、元组等;字典和集合;文件对象;迭代器对象(iterator);生成器函数(generator)
for循环语句
for语句用于遍历可迭代对象集合中的元素,并对集合中每个元素执行一次相关嵌入的语句。当集合中所有元素完成迭代后,控制传递给for 之和的下一个语句。
注意:for…else…的执行顺序:
当迭代对象完成所有迭代后且此时迭代对象为空,如果存在else子句则执行else子句,没有则继续执行后续代码;如果迭代对象因为某种原因(如果带有break关键字)提出退出迭代,则else子句不会被执行,程序将会直接跳过else子句继续执行后续代码。(循环完整执行完没有被中途break打断则运行else语句)
for i in range(10):
if i == 5:
print("循环被打断")
break
else:
print("循环完整运行完")
#output:循环被打断
for i in range(10):
if i == 10:
print("循环被打断")
break
else:
print("循环完整运行完")
#output:循环完整运行完
for 变量 in 对象集合:
循环体语句(块)1
else:
语句(块)2
等价于:
while(条件表达式):
循环体语句(块)1
else:
语句(块)2
while循环语句
死循环
如果while循环结构中的循环控制条件一直为真,则循环将无限继续,程序将一直运行下去,从而形成死循环。
while True:
#这是一个死循环
pass
大多数计算机系统可以通过Ctrl+C组合键中止当前程序运行
在Python中,
for
循环和while
循环的工作方式是不同的:
for
循环:它是一个迭代循环,用于遍历任何序列(如列表、元组、字符串)或其他可迭代对象。在每次循环中,for
循环将序列中的元素依次赋值给迭代变量,并执行一次循环体。for
循环会使用可迭代对象的__iter__
方法来获取一个迭代器,然后在每次迭代中使用__next__
方法获取下一个元素。while
循环:它是一个条件循环,只要其条件为真(即结果为True
),就会不断地执行循环体。while
循环不会使用任何魔法方法,它只是简单地检查条件是否为真。虽然
for
和while
都是循环结构,但它们的用途是不同的:for
通常用于遍历序列或迭代器,而while
则用于根据条件重复执行某些代码。
注意:从理论上讲,任何for
循环都可以用一个等效的while
循环来替换,反之亦然。这是因为这两种类型的循环都是基本的控制结构,可以用于实现任意形式的循环。
编写循环技巧
python提供了一套内置函数,可以在for循环中定制迭代
-
内置函数range:返回一系列连续增加的整数,可作为for中的索引
-
内置函数zip:返回一系列并行元素的元组
-
names = ['Alice', 'Bob', 'Charlie'] ages = [25, 30, 35] countries = ['USA', 'Canada', 'UK'] for name, age, country in zip(names, ages, countries): print(f'{name}的年龄是{age},来自{country}') # 输出: # Alice的年龄是25,来自USA # Bob的年龄是30,来自Canada # Charlie的年龄是35,来自UK
-
-
内置函数enumerate:同时生成可迭代对象中元素的值和索引,因而不必再手动计数
-
内置函数map:用于将一个函数应用于一个可迭代对象的每个元素,并返回一个包含结果的迭代器。
-
numbers = [1, 2, 3, 4, 5] doubled_numbers = map(lambda x: x * 2, numbers) print(list(doubled_numbers)) # 输出: [2, 4, 6, 8, 10]
-