Python学习笔记三之编程练习

1. 编程第一步

# 求解斐波纳契数列
#/user/bin/python3#Fibonacci series:斐波那契数列
#两个元素的总和确定了下一个数
a,b=0,1
while b<10:print(b)a,b=b,a+b
*************************************
#output:
1
1
2
3
5
8**************************************
#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 = 100
sum = 0
counter = 1
while counter <= n:sum = sum + countercounter += 1print("1 到 %d 之和为: %d" % (n,sum))
********************************************
#无限循环
var=1
while var==1:num=int(input("输入一个数字:"))print("你输入的数字是:",num)
print("Good bye!")

while使用else:

#!/usr/bin/python3count = 0
while count < 5:print (count, " 小于 5")count = count + 1
else: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:
1
2
3
4
5

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 += 1
f = 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 = 4
h = 5
print("width =", w, " height =", h, " area =", area(w, h))
**************************************************************
#output:
Welcome Runoob
width = 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}

Python学习笔记三之编程练习:循环、迭代器与函数相关推荐

  1. Python学习笔记·交互式图形编程

    Python学习笔记·交互式图形编程 注:在校计算机学生一名,菜鸟一枚,最近开始学习Python的基础知识希望有什么不对的地方各位大佬能够不令赐教! 课程是在中国大学MOOC上学的,有兴趣的同学可以自 ...

  2. Python学习笔记D2(条件与循环)

    Python学习笔记D2(条件与循环) 条件语句 if expression:(可以利用布尔操作符and,or,not) *****语句- elif:(else if) ***** 语句- else: ...

  3. Python学习笔记之函数式编程

    python中的高阶函数 高阶函数就是 变量名指向函数,下面代码中的变量abs其实是一个函数,返回数字的绝对值,如abs(-10) 返回 10 def add(x,y,f):return f(x) + ...

  4. 【廖雪峰Python学习笔记】函数式编程

    Functional Programming 高阶函数 返回函数 匿名函数 装饰器 偏函数 高阶函数 面向过程的程序设计: 把大段代码拆成函数,通过一层层函数调用,可将复杂任务分解成若干简单的任务 函 ...

  5. Python学习笔记:Io编程序列化

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:IO编程StringIO和BytesIO

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:面向对象编程(4)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:面向对象编程(3)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  9. Python学习笔记:面向对象编程(2)

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

最新文章

  1. 函数图像轻松画:教你用永中图象
  2. ubuntu 各版本的区别
  3. cosbench 安装
  4. jquery学习之重要知识点
  5. 使用UIImageView实现图像拖动、缩放等
  6. java.io.IOException: No FileSystem for scheme: hdfs转载加自己笔记
  7. why there is error after adding DocumentHistories
  8. asp判断是否移动端_asp判断用户端是电脑访问还是移动设备方法
  9. 阿里P8架构师谈:Dubbo的详细介绍、设计思路、以及4大适用场景
  10. WCF 第五章 导出并发布元数据(服务行为)
  11. oracle中job的retry次数,有大佬帮忙看下我安装过程中到底出啥问题了么..
  12. html中右边线条怎么写,html5 三角形的线条怎么写
  13. 电脑浏览器下载速度很慢怎么办
  14. Vue仿制移动端QQ音乐(可预览)
  15. 如何看待腾讯云电子签呢?
  16. python--log日志的写法和介绍
  17. 达梦数据库修改字段(列)(基表修改语句)
  18. 杰里之电流声/杂音【篇】
  19. oracle 10g alter system reset,《深入浅出Oracle》勘误表
  20. echarts的基本用法——未完待续

热门文章

  1. 二级分销系统对企业来说意味着什么?
  2. Python(4)print一个10行10列的星星图案
  3. 海豚湾在哪_菲律宾之海豚湾(PUERTO GALERA)攻略
  4. 低频RFID读卡流程
  5. 视频加密中的“一机一码”是什么意思?
  6. 《JAVA与模式》— 调停者模式
  7. 天才少年自制芯片:媲美英特尔 4004 CPU
  8. css:flex布局子元素宽度被压缩问题
  9. 什么是MTU值,如何设置最快最好?
  10. 电脑桌面图标变成长方形咋办_为什么我的界面上的图标全部被一个长方形的图标覆盖了?...