if condition_1: statement_block_1 elif condition_2: statement_block_2 else: statement_block_3
*if语句的关键字为:if – elif – else。
注意:
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…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")
同条件控制一样,需要注意冒号和缩进。另外,在 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")
“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()