(一)条件控制
一、if语句
if condition_1:
statement_block_1
elif condition_2:
statement_block_2
else:
statement_block_3
*if语句的关键字为:if – elif – else。
注意:
- 每个条件后面要使用冒号 :,表示接下来是满足条件后要执行的语句块。
- 使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。
- 在Python中没有switch – case语句。
eg1:
#!/usr/bin/python3
age = int(input("请输入你家狗狗的年龄: "))
print("")
if age <= 0:
print("你是在逗我吧!")
elif age == 1:
print("相当于 14 岁的人。")
elif age == 2:
print("相当于 22 岁的人。")
elif age > 2:
human = 22 + (age -2)*5
print(f"相当于{human}岁的人。")#f-string使用方法
### 退出提示
input("点击 enter 键退出")
eg2:
#!/usr/bin/python3
# 该实例演示了数字猜谜游戏
number = 7
guess = -1
print("数字猜谜游戏!")
while guess != number:
guess = int(input("请输入你猜的数字:"))
if guess == number:
print("恭喜,你猜对了!")
elif guess < number:
print("猜的数字小了...")
elif guess > number:
print("猜的数字大了...")
二、if嵌套
在嵌套 if 语句中,可以把 if…elif…else 结构放在另外一个 if…elif…else 结构中。
eg:
num=int(input("请输入一个数字:"))
if num%2==0:
if num%3==0:
print(f"数字{num}可以整除2和3")
else:
print(f"数字{num}可以整除2但不能整除3")
else:
if num%3==0:
print(f"数字{num}不能整除2但可以整除3")
else:
print(f"数字{num}既不能整除2也不能整除3")
(二)循环语句
- for
- while
一、while循环
同条件控制一样,需要注意冒号和缩进。另外,在 Python 中没有 do…while 循环。
#计算0到num之和
num=int(input("请输入一个数字"))
sum=0
i=1
while(i<=num):
sum=sum+i
i=i+1
print(f"0到{num}之和等于{sum}")
无限循环:
设置条件表达式永远不为 false 来实现无限循环。
var = 1
while var == 1 : # 表达式永远为 true
num = int(input("输入一个数字 :"))
print ("你输入的数字是: ", num)
print ("Good bye!")
while 循环使用 else 语句
count = 0
while count < 5:
print (count, " 小于 5")
count = count + 1
else:
print (count, " 大于或等于 5")
二、for语句
“Baidu”, “Google”,“Runoob”,"Taobao"依次进入for循环中,当轮到Runoob进入if判断 if site == “Runoob”:时,执行break语句,跳出for循环,完成循环。break 语句用于跳出当前循环体
sites = ["Baidu", "Google","Runoob","Taobao"]
for site in sites:
if site == "Runoob":
print("菜鸟教程!")
break
print("循环数据 " + site)
else:
print("没有循环数据!")
print("完成循环!")
range()函数:
使用内置range()函数,遍历数字序列。
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> for i in range(5,9):
... print(i)
...
5
6
7
8
>>> for i in range(0,10,3):#3指定不同的增量
... print(i)
...
0
3
6
9
>>> for i in range(-10,-100,-30):
... print(i)
...
-10
-40
-70
结合range()和len()函数遍历一个序列的索引:
a=['Google', 'Baidu', 'Runoob', 'Taobao', 'QQ']
for i in range(len(a)):
print(f"{i}-{a[i]}")
(三)迭代器与生成器
一、迭代器
迭代:访问集合元素的一种方式
迭代器:可以记住遍历的位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器两个基本方法:
1.iter()
2.next()
字符串,列表或元组对象都可用于创建迭代器:
iter__() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了 next() 方法并通过 StopIteration 异常标识迭代的完成。
class MyNumbers:
def __iter__(self):
self.a = 1
return self
def __next__(self):
x = self.a
self.a += 1
return x
myclass = MyNumbers()
myiter = iter(myclass)
for x in range(5) :
print(next(myiter))
StopIteration
StopIteration 异常用于标识迭代的完成,防止出现无限循环的情况,在 next() 方法中我们可以设置在完成指定循环次数后触发 StopIteration 异常来结束迭代。
在20次迭代后停止循环:
class MyNumbers:
def __iter__(self):
self.a = 1 #起始数字
return self
def __next__(self):
if self.a <= 20: #迭代到20停止
x = self.a
self.a += 1
return x
else:
raise StopIteration
myclass = MyNumbers()
myiter = iter(myclass)
for x in myiter:
print(x)
二、生成器
生成器:使用了 yield 的函数被称为生成器(generator)。生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
调用一个生成器函数,返回的是一个迭代器对象。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
斐波那契数列_生成器:
#!/usr/bin/python3
import sys
def fibonacci(n): # 生成器函数 - 斐波那契
a, b, counter = 0, 1, 0
while True:
if (counter > n):
return
yield a
a, b = b, a + b
counter += 1
f = fibonacci(10) # f 是一个迭代器,由生成器返回生成
while True:
try:
print (next(f), end=" ")
except StopIteration:
sys.exit()