第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > Python学习笔记三之编程练习:循环 迭代器与函数

Python学习笔记三之编程练习:循环 迭代器与函数

时间:2019-04-06 12:56:59

相关推荐

Python学习笔记三之编程练习:循环 迭代器与函数

Python学习笔记三之编程练习

1. 编程第一步

# 求解斐波纳契数列#/user/bin/python3#Fibonacci series:斐波那契数列#两个元素的总和确定了下一个数a,b=0,1while b<10:print(b)a,b=b,a+b*************************************#output:112358**************************************#end关键字while b<10:print(b,end=',')a,b=b,a+b

2. if语句

#!/usr/bin/python3age = int(input("请输入你家狗狗的年龄: "))print("")if age <= 0:print("你是在逗我吧!")elif age == 1:print("相当于 14 岁的人。")elif age == 2:print("相当于 22 岁的人。")elif age > 2:human = 22 + (age -2)*5print("对应人类年龄: ", human)### 退出提示input("点击 enter 键退出")******************************************************#将以上脚本保存在dog.py文件中,并执行该脚本:******************************************************$ python3 dog.py 请输入你家狗狗的年龄: 1相当于 14 岁的人。点击 enter 键退出

# !/usr/bin/python3num=int(input("输入一个数字:"))if num%2==0:if num%3==0:print ("你输入的数字可以整除 2 和 3")else:print ("你输入的数字可以整除 2,但不能整除 3")else:if num%3==0:print ("你输入的数字可以整除 3,但不能整除 2")else:print ("你输入的数字不能整除 2 和 3")

将以上程序保存到 test_if.py 文件中,执行后输出结果为:

$ python3 test.py

输入一个数字:6

你输入的数字可以整除 2 和 3

3. 循环语句

3.1 标题while

普通循环与无限循环

#!/usr/bin/env python3#普通循环n = 100sum = 0counter = 1while counter <= n:sum = sum + countercounter += 1print("1 到 %d 之和为: %d" % (n,sum))********************************************#无限循环var=1while var==1:num=int(input("输入一个数字:"))print("你输入的数字是:",num)print("Good bye!")

while使用else:

#!/usr/bin/python3count = 0while count < 5:print (count, " 小于 5")count = count + 1else:print (count, " 大于或等于 5")

3.2 for循环

sites=["Baidu","Google","Runoob","Taobao"]for site in sites:if site == "Runoob":print("菜鸟教程!")breakprint("循环数据" + site)else:print("没有循环数据!")print("完成循环!")

内置函数Range()使用

for i in range(5):print(i)***for i in range(5,9):print(i)***for i in range(0,10,3)print(i,end=',')#output:0,3,6,9

3.3 break 和 continue 语句及循环中的 else 子句

#!/usr/bin/python3for letter in 'Runoob':# 第一个实例if letter == 'o': # 字母为 o 时跳过输出continueprint ('当前字母 :', letter)var = 10# 第二个实例while var > 0: var = var -1if var == 5: # 变量为 5 时跳过输出continueprint ('当前变量值 :', var)print ("Good bye!")

当前字母 : R

当前字母 : u

当前字母 : n

当前字母 : b

当前变量值 : 9

当前变量值 : 8

当前变量值 : 7

当前变量值 : 6

当前变量值 : 4

当前变量值 : 3

当前变量值 : 2

当前变量值 : 1

当前变量值 : 0

Good bye!

3.4 pass语句

Python pass是空语句,是为了保持程序结构的完整性。

pass 不做任何事情,一般用做占位语句,如下实例:

>>>while True:...pass # 等待键盘中断 (Ctrl+C)

for letter in 'Runoob':if letter == 'o':passprint('执行pass块')print('当前字母:',letter)print("Good bye!")

当前字母 : R

当前字母 : u

当前字母 : n

执行 pass 块

当前字母 : o

执行 pass 块

当前字母 : o

当前字母 : b

Good bye!

4.迭代器与生成器

迭代是Python最强大的功能之一,是访问集合元素的一种方式。

迭代器是一个可以记住遍历的位置的对象。

迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。

迭代器有两个基本的方法:iter() 和 next()。

字符串,列表或元组对象都可用于创建迭代器:

>>>list=[1,2,3,4]>>>it=iter(list) #创建迭代器对象>>>print(next(it)) #输出迭代器的下一个元素1>>>print(next(it))2>>>

+for循环

list=[1,2,3,4]it=iter(list)for x in it:print(x,end=" ")**************************************# output: 1,2,3,4

4.1 迭代器

把一个类作为一个迭代器使用需要在类中实现两个方法iter() 与next() 。

如果你已经了解的面向对象编程,就知道类都有一个构造函数,Python 的构造函数为init(), 它会在对象初始化的时候执行。

iter() 方法返回一个特殊的迭代器对象, 这个迭代器对象实现了next() 方法并通过 StopIteration 异常标识迭代的完成。

next() 方法(Python 2 里是 next())会返回下一个迭代器对象。

创建一个返回数字的迭代器,初始值为 1,逐步递增 1:

class MyNumbers:def __iter__(self):self.a = 1return selfdef __next__(self):x = self.aself.a += 1return xmyclass = MyNumbers()myiter = iter(myclass)print(next(myiter))print(next(myiter))print(next(myiter))print(next(myiter))print(next(myiter))*************************************#output:12345

4.2 生成器

在 Python 中,使用了 yield 的函数被称为生成器(generator)。

跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。

在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next()

方法时从当前位置继续运行。

调用一个生成器函数,返回的是一个迭代器对象。

以下实例使用 yield 实现斐波那契数列:

#!/usr/bin/python3import sysdef fibonacci(n): # 生成器函数 - 斐波那契a, b, counter = 0, 1, 0while True:if (counter > n): returnyield aa, b = b, a + bcounter += 1f = fibonacci(10) # f 是一个迭代器,由生成器返回生成while True:try:print (next(f), end=" ")except StopIteration:sys.exit()********************************************************#output: 0 1 1 2 3 5 8 13 21 34 55

5.函数

#!/usr/bin/python3# 计算面积函数def area(width, height):return width * heightdef print_welcome(name):print("Welcome", name)print_welcome("Runoob")w = 4h = 5print("width =", w, " height =", h, " area =", area(w, h))**************************************************************#output:Welcome Runoobwidth = 4 height = 5 area = 20

不定长参数:

加了星号 * 的参数会以元组(tuple)的形式导入,存放所有未命名的变量参数。

#!/usr/bin/python3# 可写函数说明def printinfo( arg1, *vartuple ):"打印任何传入的参数"print ("输出: ")print (arg1)print (vartuple)# 调用printinfo 函数printinfo( 70, 60, 50 )*****************************************#output:70(60,50)****************************************#如果在函数调用时没有指定参数,它就是一个空元组。我们也可以不向函数传递未命名的变量。如下实例:printinfo( 10 )#output:10

加了两个星号 ** 的参数会以字典的形式导入。

#!/usr/bin/python3# 可写函数说明def printinfo( arg1, **vardict ):"打印任何传入的参数"print ("输出: ")print (arg1)print (vardict)# 调用printinfo 函数printinfo(1, a=2,b=3)**************************************#输出: 1{'a': 2, 'b': 3}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。