本节学习python中的条件语句、循环语句、迭代器和生成器。
1、条件语句
python条件语句使用if……elif……else格式
1 num = int(input('请输入你的成绩:')) 2 if num > 85: 3 print('优秀') #使用缩进划分语块 4 elif 85>= num > 70: 5 print('良好') 6 elif 70>=num>=60: 7 print('及格') 8 else: 9 print('不及格')
python中没有switch--case语句
2、循环语句
while循环
1 num = 5 2 while(num>2): #while循环 3 print(num) 4 num -= 1 5 6 num = 5 7 while(num>2): #while……else…… 循环,while条件为false时else语句执行 8 num -= 1 9 print(num) 10 else: 11 print("else:%d"%num)
python中没有do……while……,当出现死循环可以使用CTRL+C退出
for循环,可以循环遍历任何序列对象,如字典、字符串、列表
1 num = 5 2 for i in [1,2,3,4,5,7]: 3 print(i) 4 5 # str1='cainiaoxuexi' 6 str1='a' 7 for i in str1: 8 if i == 'x': 9 print('中断,跳出循环') 10 break #break跳出整个循环 11 print(i) 12 else: #如果没有break循环,那么for循环结束后else执行 13 print('没有循环体') 14 print("循环结束")
1 str1='axv' 2 for i in str1: 3 if i == 'x': 4 continue #结束本次循环 5 print(i) 6 else: #如果没有break循环,那么for循环结束后else执行 7 print('没有循环体') 8 print("循环结束")
break 语句可以跳出 for 和 while 的循环体。如果你从 for 或 while 循环中终止,任何对应的循环 else 块将不执行。
continue 语句被用来告诉 Python 跳过当前循环块中的剩余语句,然后继续进行下一轮循环。
range()函数用于生成数字序列
1 for i in range(100,120,5): #可以指定开始,结束值 和 步长,步长也可以为负数 2 print(i) 3 4 for i in range(-100,-120,-5): #可以指定开始,结束值 和 步长,步长也可以为负数 5 print(i)
3、迭代器和生成器
迭代器是可以记住循环的位置的对象,是访问集合元素的一种方式,从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
字符串,列表或元组对象都可用于创建迭代器:
1 import sys 2 3 list1 = [1,2,3,4,5,6,7,8] 4 it = iter(list1) 5 print(type(it)) #是个列表跌倒器对象 6 while True: 7 try: 8 print(next(it)) 9 except StopIteration: 10 sys.exit()
创建一个类迭代器,需要在类中实现两个方法 __iter__() 与 __next__()
1 class MyNumber(): 2 def __iter__(self): #__iter__() 方法返回一个特殊的迭代器对象 3 self.a = 1 4 return self 5 6 def __next__(self): 7 if self.a <= 20: 8 x = self.a 9 self.a += 1 10 return x 11 else: 12 raise StopIteration 13 14 15 myclass = MyNumber() 16 myiter = iter(myclass) 17 18 for x in myiter: 19 print(x)
生成器
在 Python 中,使用了 yield 的函数被称为生成器(generator)。
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
调用一个生成器函数,返回的是一个迭代器对象。
1 import sys 2 3 4 def fibonacci(n): # 生成器函数 - 斐波那契 5 a, b, counter = 0, 1, 0 6 while True: 7 if (counter > n): 8 return 9 yield a 10 a, b = b, a + b 11 counter += 1 12 13 14 f = fibonacci(10) # f 是一个迭代器,由生成器返回生成 15 16 while True: 17 try: 18 print(next(f), end=" ") 19 except StopIteration: 20 sys.exit()