中企动力 > 头条 > python3实例开发

网站性能检测评分

注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。

python3实例开发

Python入门之走向编程第一步一个例子开始 推广视频课程

img

索尼亚

关注

Of course, we can use Python for more complicated tasks than adding two and two together. For instance, we can write an initial sub-sequence of the Fibonacci series as follows当然,我们可以使用Python来完成比把两个和两个加在一起更复杂的任务。例如,我们可以写出斐波那契级数的初始子序列如下

>>> # Fibonacci series:

... # the sum of two elements defines the next

... a, b = 0, 1

>>> while b < 10:

... print(b)

... a, b = b, a+b

...

1

1

2

3

5

8

The first line contains a multiple assignment: the variables a and b simultaneously get the new values 0 and 1. On the last line this is used again, demonstrating that the expressions on the right-hand side are all evaluated first before any of the assignments take place. The right-hand side expressions are evaluated from the left to the righ

第一行包含多个赋值:变量A和B同时获得新值0和1。在最后一行中,再次使用,表明在任何赋值发生之前首先对右边的表达式进行求值。右边表达式由左到右进行计算。

The while loop executes as long as the condition (here: b < 10) remains true. In Python, like in C, any non-zero integer value is true; zero is false. The condition may also be a string or list value, in fact any sequence; anything with a non-zero length is true, empty sequences are false. The test used in the example is a simple comparison. The standard comparison operators are written the same as in C: < (less than), > (greater than), == (equal to), <= (less than or equal to), >= (greater than or equal to) and != (not equal to).只要条件(这里:b<10)成立,while循环就执行。在Python中,像在C中一样,任何非零整数值都是true;0是false。条件也可以是字符串或列表值,实际上是任何序列;具有非零长度的任何东西都是真的,空序列是错误的。在示例中使用的测试是一个简单的比较。标准比较运算符的编写与C:<(小于)、>(大于)、=(等于)、<=(小于或等于)、>=(大于或等于)和!=(不等于)。

The body of the loop is indented: indentation is Python’s way of grouping statements. At the interactive prompt, you have to type a tab or space(s) for each indented line. In practice you will prepare more complicated input for Python with a text editor; all decent text editors have an auto-indent facility. When a compound statement is entered interactively, it must be followed by a blank line to indicate completion (since the parser cannot guess when you have typed the last line). Note that each line within a basic block must be indented by the same amount.循环体是缩进的:缩进是Python对语句进行分组的方式。在交互式提示符上,您必须为每个缩进线键入一个制表符或空格。在实践中,您将为Python编写一个更复杂的文本编辑器,所有的文本编辑器都有一个自动缩进工具。当一个复合语句交互输入时,必须跟随一条空白行来表示完成(因为解析器不能猜出您输入了最后一行)。请注意,基本块中的每一行必须以相同的数量缩进。

The print() function writes the value of the argument(s) it is given. It differs from just writing the expression you want to write (as we did earlier in the calculator examples) in the way it handles multiple arguments, floating point quantities, and strings. Strings are printed without quotes, and a space is inserted between items, so you can format things nicely, like this:Print()函数写入给定的参数的值。它不同于只写表达式(正如我们前面在计算器示例中所写的),它处理多个参数、浮点量和字符串的方式不同。字符串不带引号打印,在项目之间插入一个空格,这样就可以很好地格式化,像这样:

>>> i = 256*256

>>> print('The value of i is', i)

The value of i is 65536

The keyword argument end can be used to avoid the newline after the output, or end the output with a different string:关键字参数结束可以用来避免输出后的换行符,或者用不同的字符串结束输出:

>>> a, b = 0, 1

>>> while b < 1000:

... print(b, end=',')

... a, b = b, a+b

...

1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,

Footnotes:注意:

Since ** has higher precedence than -, -3**2 will be interpreted as -(3**2) and thus result in -9. To avoid this and get 9, you can use (-3)**2.

由于**比-A具有更高的优先级,-*** 2将被解释为-(3**2),从而导致-9。为了避免这个问题,得到9,你可以使用(-3)** 2。

Unlike other languages, special characters such as \n have the same meaning with both single ('...') and double ("...") quotes. The only difference between the two is that within single quotes you don’t need to escape " (but you have to escape \') and vice versa.不像其他语言,特殊字符如\与双单引号(‘...’)和双引号(“....”)有相同的作用,唯一的不同是在双单引号时您不需要避免双引号,但是要避免\',反之亦然。

「Python实例」生成16位随机序列号 行业视频课程

img

追命

关注

[Python实例] 生成16位随机序列号

代码:

结果:rhAP-GP5B-Q8Dy-Wg74

import string,random

field=string.letters+string.digits

def getRandom(size):

return "".join(random.sample(field,size))

def generate(group,size):

return "-".join([getRandom(size) for i in range(group)])

print generate(4,4)

小羊学编程之Python爬虫实例 行业视频课程

img

Zenaide

关注

Python爬虫学习了一些时间,今天看到某网的文章,平时只是一部分一部分复制粘贴,有时甚至不让复制。于是想利用Python爬虫下载文章保存到本地。哈哈。为了便于学习理解,直接上代码加注释。重点学习稳中有降模块的用法。

from urllib.request import urlopen

from bs4 import BeautifulSoup #Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库

import html5lib #html5lib 是一个 Ruby和 Python用来解析 HTML文档的类库,支持HTML5

import time # Python time时间模块

import os

import requests #requests是python的一个HTTP客户端库

from time import sleep #,使用sleep函数可以让程序休眠延时。

def Download_Novel(html): #定义一个下载文章函数。

bsObj=BeautifulSoup(html,'html5lib') #利用BeautifulSoup析html页面

chapter=bsObj.find("p",{"class","read-content j_readContent"}) #获取文章内容

title=bsObj.find("",{"class","j_chapterName"}) #获取文章标题。

print (chapter.get_text()) #打印出文章内容。

print (title) #打印出文章标题。

fo=open("d:/001.txt","a") #打开文件

fo.write(chapter.get_text())#写入文件

fo.close #close()方法用于关闭一个已打开的文件

bsoup=bsObj.find("a",{"id":"j_chapterNext"}) #获取下一章节文章内容

html2="http:"+bsoup.get('href')+""#获取下一章节文章URL

return (urlopen(html2))

html=urlopen("https://xxxxxxxxxx/chapter/5889870403237101/15810501355231395")

i=1

while(i<10): #下载章节数目

html=Download_Novel(html)

i=i+1

start = time.time() #程序运行开始时间

Download_Novel(html)

sleep(1) #让程序延时

c = time.time() - start #程序运行结束时间

print('保存文章结束,运行共耗时:%0.2f'%(c))

运行结果如下图:

文件内容保存到D盘的001.txt文件中。

文中不妥之处请朋友们指正!谢谢

干货!Python入门基础之面向对象二:类和实例、方法 互联网视频课程

img

闵鹏笑

关注

前面

一篇

文章我介绍了python面向对象的基本知识,链接在最下面。初步解释了面向对象和面向对象的优点,今天就开始正式用代码来展现面向对象。

1、利用class创建类

Python中,创建类的语句是如下所示

先解释一下,class后面跟的是类名,括号里面是基类(也成为父类)python3中默认继承object。里面的函数称为方法(注意,严格来说,python中,位于类里面的def语句才能被称为方法,而在类外面定义的def只能被称为函数)。示例如下

2、定义类的属性,

我们讲了类是有属性的,那么如何定义类的属性,有以下两种种:

1、 直接在类里面定义,这里属性是位于类的变量空间里面,整个类中可以直接访问。

2、 在构造函数里面定义,这是对象的属性,访问时要通过self访问。

3、构造函数__init__

类是由属性构成的,当我们在定义一个类的时候,我们需要对类的属性进行设置,这时候就用到了构造函数:__init__(self,[……]),我们在构造函数中的参数是赋值给self,因为在oop中,self就是实例对象,name、age、weight变成了状态信息。

我们接上面说为什么它继承object,通过dir()我们可以打印出他的属性,发现他继承了很多方法,在后面的使用中会比较方便。(这里涉及到了新式类和老式类的问题,在python3中全都是新式类,新式类更加强大)。

4、访问控制

Python不像Java中有明确的访问控制方法,说白了就是没有访问控制。不过有一套约定俗成的方法:全靠自觉

变量名前面无下划线,可以公开访问。

变量名前面带有一个下划线:类的私有属性。

变量名前面带有两个下划线:部分私有属性,类里面可以访问,实例化之后不能直接访问。

再说一遍:全靠自觉!其实它们无论怎样都是可以访问的。这样只是代码规范,方便以后的代码维护。

5、定义类的方法

函数和方法的区别:前面我讲过,python在类中的def才能被称为方法,因为函数和方法的区别就是它们是否依附于一个类。函数直接通过函数名调用,方法通过类实例化调用,方法是类的一个属性。

方法的访问控制和类的属性一样,也是没有,定义方法也就差不多,如下:

绑定方法:

你们可能注意到了,每个方法中 都有self,这个self是绑定类的,表示函数是类的属性。

self 变量用于在类实例方法中引用方法所绑定的实例。因为方法的实例在任何方法调用中总是作为第一个参数传递的,self 被选中用来代表实例。你必须在方法声明中放上 self(你可能已经注意到了这点),但可以在方法中不使用实例(self)。如果你的方法中没有用到 self , 那么请考虑创建一个常规函数,除非你有特别的原因。毕竟,你的方法代码没有使用实例,没有与类关联其功能,这使得它看起来更像一个常规函数。在其它面向对象语言中,self 可能被称为 this。

方法装饰器:

@classmenthod类方法,调用的时候用类名,不是先生成对象,由对象调用

@property像访问属性一样调用方法,就是指不用加括号了。

如下:我在上面的那个类里面加了两个方法,用了这两个修饰器。

使用方法如下:

上一篇:Python 入门基础之面向对象过程-面向过程概述

下一篇介绍类的继承、运算符重载(钩子)等。欢迎关注。

过年回来程序员分享Python爬取网页信息例子,涨知识了! 推广视频课程

img

人英

关注

爬虫涉及的技术包括但不限于熟练一门编程语言(这里以 Python 为例) HTML 知识、HTTP 协议的基本知识、正则表达式、数据库知识,常用抓包工具的使用、爬虫框架的使用、涉及到大规模爬虫,还需要了解分布式的概念、消息队列、常用的数据结构和算法、缓存,甚至还包括机器学习的应用,大规模的系统背后都是靠很多技术来支撑的。数据分析、挖掘、甚至是机器学习都离不开数据,而数据很多时候需要通过爬虫来获取,因此,即使把爬虫作为一门专业来学也是有很大前途的。在学习爬虫之前我们先学习下面的需要的知识线路理清楚。

第一:了解相关Http协议知识

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(Internet Engineering Task Force)合作的结果,(他们)最终发布了一系列的RFC,RFC 1945定义了HTTP/1.0版本。其中最著名的就是RFC 2616。RFC 2616定义了今天普遍使用的一个版本——HTTP 1.1。

HTTP协议(HyperText Transfer Protocol,超文本传输协议)是用于从WWW服务器传输超文本到本地浏览器的传送协议。它可以使浏览器更加高效,使网络传输减少。它不仅保证计算机正确快速地传输超文本文档,还确定传输文档中的哪一部分,以及哪部分内容首先显示(如文本先于图形)等。

HTTP的请求响应模型

HTTP协议永远都是客户端发起请求,服务器回送响应。

这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。

HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

工作流程

一次HTTP操作称为一个事务,其工作过程可分为四步:

1)首先客户机与服务器需要建立连接。只要单击某个超级链接,HTTP的工作开始。

2)建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。

3)服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。

4)客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

如果在以上过程中的某一步出现错误,那么产生错误的信息将返回到客户端,有显示屏输出。对于用户来说,这些过程是由HTTP自己完成的,用户只要用鼠标点击,等待信息显示就可以了。

第二:了解Python中urllib库

Python2系列使用的是urllib2,Python3后将其全部整合为urllib;我们所需学习的是几个常用函数。细节可去官网查看。

第三:开发工具

Python自带编译器 -- IDLE,十分简洁;PyCharm -- 交互很好的Python一款IDE;Fiddler -- 网页请求监控工具,我们可以使用它来了解用户触发网页请求后发生的详细步骤;简单网页爬虫代码例子:

Match对象是一次匹配的结果,包含了很多关于此次匹配的信息,可以使用Match提供的可读属性或方法来获取这些信息。

属性:

string: 匹配时使用的文本。

re: 匹配时使用的Pattern对象。

pos: 文本中正则表达式开始搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。

endpos: 文本中正则表达式结束搜索的索引。值与Pattern.match()和Pattern.seach()方法的同名参数相同。

lastindex: 最后一个被捕获的分组在文本中的索引。如果没有被捕获的分组,将为None。

lastgroup: 最后一个被捕获的分组的别名。如果这个分组没有别名或者没有被捕获的分组,将为None。

方法:

group([group1, …]):

获得一个或多个分组截获的字符串;指定多个参数时将以元组形式返回。group1可以使用编号也可以使用别名;编号0代表整个匹配的子串;不填写参数时,返回group(0);没有截获字符串的组返回None;截获了多次的组返回最后一次截获的子串。

groups([default]):

以元组形式返回全部分组截获的字符串。相当于调用group(1,2,…last)。default表示没有截获字符串的组以这个值替代,默认为None。

groupdict([default]):

返回以有别名的组的别名为键、以该组截获的子串为值的字典,没有别名的组不包含在内。default含义同上。

start([group]):

返回指定的组截获的子串在string中的起始索引(子串第一个字符的索引)。group默认值为0。

end([group]):

返回指定的组截获的子串在string中的结束索引(子串最后一个字符的索引+1)。group默认值为0。

span([group]):

返回(start(group), end(group))。

expand(template):

将匹配到的分组代入template中然后返回。template中可以使用id或g、g引用分组,但不能使用编号0。id与g是等价的;但将被认为是第10个分组,如果你想表达之后是字符’0’,只能使用g<1>0。

云计算、大数据分析、人工智能、物联网等领域Python应用无处不在。百度、阿里、腾讯、网易、新浪,搜狐等各公司都在大规模使用Python技术。各公司Python人才急缺,但是精通Python爬虫技术的人才不多。好了,今天的知识点就分享给大家到这里,祝大家早日成为Python大牛,想要获取更多学习资源和教程,请私聊爱编程的南风头条号,私信关键词:学习资料。同时,欢迎大家留言交流如何学习Python爬虫技术。

零基础学习Python开发练习实例(4) 互联网视频课程

img

柏秋莲

关注

31、题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母。。

程序源代码:

实例

#!/usr/bin/python

#-*-coding:UTF-8-*-

letter=raw_input("pleaseinput:")

#whileletter!='Y':

ifletter=='S':

print('pleaseinputsecondletter:')

letter=raw_input("pleaseinput:")

ifletter=='a':

print('Saturday')

elifletter=='u':

print('Sunday')

32、题目:按相反的顺序输出列表的值。

程序分析:无。

程序源代码:

实例

#!/usr/bin/python

#-*-coding:UTF-8-*-

a=['one','two','three']

foriina[::-1]:

printi

以上实例输出结果为:

three

two

one

else:

print('dataerror')

elifletter=='F':

print('Friday')

elifletter=='M':

print('Monday')

elifletter=='T':

print('pleaseinputsecondletter')

letter=raw_input("pleaseinput:")

ifletter=='u':

print('Tuesday')

elifletter=='h':

print('Thursday')

else:

print('dataerror')

elifletter=='W':

print('Wednesday')

else:

print('dataerror')

以上实例输出结果为:

pleaseinput:S

pleaseinputsecondletter:

pleaseinput:a

Saturday

33、题目:按逗号分隔列表。

程序分析:无。

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- L = [1,2,3,4,5] s1 = ','.join(str(n) for n in L) print s1

以上实例输出结果为:

1,2,3,4,5

34、题目:练习函数调用。

程序分析:无。

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- def hello_world: print 'hello world' def three_hellos: for i in range(3): hello_world if __name__ == '__main__': three_hellos

以上实例输出结果为:

hello world

hello world

hello world

35、题目:文本颜色设置。

程序分析:无。

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- class bcolors: HEADER = '[95m' OKBLUE = '[94m' OKGREEN = '[92m' WARNING = '[93m' FAIL = '[91m' ENDC = '[0m' BOLD = '[1m' UNDERLINE = '[4m' print bcolors.WARNING + "警告的颜色字体?" + bcolors.ENDC

以上实例输出结果为:

警告的颜色字体? #浅黄色

36、题目:求100之内的素数。

程序分析:无。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- #输出指定范围内的素数 #用户输入数据 lower = int(input("输入区间最小值: ")) upper = int(input("输入区间最大值: ")) for num in range(lower,upper + 1): #素数大于 1 if num > 1: for i in range(2,num): if (num % i) == 0: break else: print(num)

以上实例输出结果为:

输入区间最小值: 1

输入区间最大值: 100

2

3

5

7

11

13

17

19

23

29

31

37

41

43

47

53

59

61

67

71

73

79

83

89

97

37、题目:对10个数进行排序。

程序分析:可以利用选择法,即从后9个比较过程中,选择一个最小的与第一个元素交换,下次类推,即用第二个元素与后8个进行比较,并进行交换。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == "__main__": N = 10 # input data print '请输入10个数字: ' l = for i in range(N): l.append(int(raw_input('输入一个数字: '))) print for i in range(N): print l[i] print #排列10个数字 for i in range(N - 1): min = i for j in range(i + 1,N): if l[min] > l[j]:min = j l[i],l[min] = l[min],l[i] print '排列之后:' for i in range(N): print l[i]

以上实例输出结果为:

请输入10个数字:

输入一个数字:

5

输入一个数字:

3

输入一个数字:

23

输入一个数字:

67

输入一个数字:

2

输入一个数字:

56

输入一个数字:

45

输入一个数字:

98

输入一个数字:

239

输入一个数字:

9

5

3

23

67

2

56

45

98

239

9

排列之后:

2

3

5

9

23

45

56

67

98

239

38、题目:求一个3*3矩阵主对角线元素之和。

程序分析:利用双重for循环控制输入二维数组,再将a[i][i]累加后输出。

程序源代码:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': a = sum = 0.0 for i in range(3): a.append() for j in range(3): a[i].append(float(raw_input("input num: "))) for i in range(3): sum += a[i][i] print sum

以上实例输出结果为:

input num:

78

input num:

34

input num:

23

input num:

34

input num:

56

input num:

33

input num:

12

input num:

21

input num:

2

136.0

39、题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中。

程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- if __name__ == '__main__': #方法一 : 0作为加入数字的占位符 a = [1,4,6,9,13,16,19,28,40,100,0] print '原始列表:' for i in range(len(a)): print a[i], number = int(raw_input("插入一个数字: ")) end = a[9] if number > end: a[10] = number else: for i in range(10): if a[i] > number:temp1= a[i] a[i] = number for j in range(i + 1,11): temp2 = a[j] a[j] = temp1temp1= temp2 break print '排序后列表:' for i in range(11): print a[i],

以上实例输出结果为:

原始列表:

1 4 6 9 13 16 19 28 40 100 0

插入一个数字:

7

排序后列表:

1 4 6 7 9 13 16 19 28 40 100

40、题目:将一个数组逆序输出。

程序分析:用第一个与最后一个交换。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python# -*-coding: UTF-8 -*- if __name__ == '__main__': a = [9,6,5,4,1] N = len(a) print a for i in range(len(a) / 2): a[i],a[N - i - 1] = a[N - i - 1],a[i] print a

以上实例输出结果为:

[9, 6, 5, 4, 1]

[1, 4, 5, 6, 9]

Python练习实例一 营销视频课程

img

老榕树

关注

题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

程序源代码:

以上实例输出结果为:

使用列表形式,并计算总结:

将for循环和if语句综合成一句,直接打印出结果

参考方法(设置最大,最小值):

python3 下参考方案:

参考方法:

python自带这个函数的

补充一下:

没事找事之位运算

考虑减少冗余判断和循环,做如下优化;

Python3 测试实例

加入了format函数

数量统计用个做自加就够了

参考:

零基础学习Python开发练习实例(3) 行业视频课程

img

屈幼珊

关注

21、题目:猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

程序分析:采取逆向思维的方法,从后往前推断。

程序源代码:

实例(Python2.0+)

#!/usr/bin/python # -*-coding: UTF-8 -*- x2 = 1 for day in range(9,0,-1): x1 = (x2 + 1) * 2 x2 = x1 print x1

以上实例输出结果为:

1534

22、题目:两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- for i in range(ord('x'),ord('z') + 1): for j in range(ord('x'),ord('z') + 1): if i != j: for k in range(ord('x'),ord('z') + 1): if (i != k) and (j != k): if (i != ord('x')) and (k != ord('x')) and (k != ord('z')): print 'order is a -- %s b -- %s c--%s' % (chr(i),chr(j),chr(k))

以上实例输出结果为:

order is a -- z b -- x c--y

23、题目:打印出如下图案(菱形):

*

***

*****

*******

*****

***

*

程序分析:先把图形分成两部分来看待,前四行一个规律,后三行一个规律,利用双重for循环,第一层控制行,第二层控制列。

程序源代码:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- from sys import stdout for i in range(4): for j in range(2 - i + 1): stdout.write(' ') for k in range(2 * i + 1): stdout.write('*') print for i in range(3): for j in range(i + 1): stdout.write(' ') for k in range(4 - 2 * i + 1): stdout.write('*') print

以上实例输出结果为:

*

***

*****

*******

*****

***

*

24、题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前20项之和。

程序分析:请抓住分子与分母的变化规律。

程序源代码:

方法一:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 2.0 b = 1.0 s = 0 for n in range(1,21): s += a / b t = a a = a + b b = t print s

方法二:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 2.0 b = 1.0 s = 0.0 for n in range(1,21): s += a / b b,a = a , a + b print s s = 0.0 for n in range(1,21): s += a / b b,a = a , a + b print s

方法三:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- a = 2.0 b = 1.0 l = l.append(a / b) for n in range(1,20): b,a = a,a + b l.append(a / b) print reduce(lambda x,y: x + y,l)

以上实例输出结果为:

32.6602607986

25、题目:求1+2!+3!+...+20!的和。

程序分析:此程序只是把累加变成了累乘。

方法一

#!/usr/bin/python # -*- coding: UTF-8 -*- n = 0 s = 0 t = 1 for n in range(1,21): t *= n s += t print '1! + 2! + 3! + ... + 20! = %d' % s方法二

#!/usr/bin/python # -*- coding: UTF-8 -*- s = 0 l = range(1,21) def op(x): r = 1 for i in range(1,x + 1): r *= i return r s = sum(map(op,l)) print '1! + 2! + 3! + ... + 20! = %d' % s

以上实例输出结果为:

1! + 2! + 3! + ... + 20! = 2561327494111820313

26、题目:利用递归方法求5!。

程序分析:递归公式:fn=fn_1*4!

程序源代码:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- def fact(j): sum = 0 if j == 0: sum = 1 else: sum = j * fact(j - 1) return sum print fact(5)

以上实例输出结果为:

120

27、题目:利用递归函数调用方式,将所输入的5个字符,以相反顺序打印出来。

程序分析:无。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python # -*- coding: UTF-8 -*- def output(s,l): if l==0: return print (s[l-1]) output(s,l-1) s = raw_input('Input a string:') l = len(s) output(s,l)

以上实例输出结果为:

Input a string:abcde

e

d

c

b

a

28、题目:有5个人坐在一起,问第五个人多少岁?他说比第4个人大2岁。问第4个人岁数,他说比第3个人大2岁。问第三个人,又说比第2人大两岁。问第2个人,说比第一个人大两岁。最后问第一个人,他说是10岁。请问第五个人多大?

程序分析:利用递归的方法,递归分为回推和递推两个阶段。要想知道第五个人岁数,需知道第四人的岁数,依次类推,推到第一人(10岁),再往回推。

程序源代码:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- def age(n): if n == 1: c = 10 else: c = age(n - 1) + 2 return c print age(5)

以上实例输出结果为:

18

29、题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

程序分析:学会分解出每一位数。

程序源代码:

实例

#!/usr/bin/python # -*- coding: UTF-8 -*- x = int(raw_input("请输入一个数: ")) a = x / 10000 b = x % 10000 / 1000 c = x % 1000 / 100 d = x % 100 / 10 e = x % 10 if a != 0: print "5位数:",e,d,c,b,a elif b != 0: print "4位数:",e,d,c,b, elif c != 0: print "3位数:",e,d,c elif d != 0: print "2位数:",e,d else: print "1位数:",e

以上实例输出结果为:

请输入一个数:

23459

5位数: 9 5 4 3 2

请输入一个数:

3472

4位数: 2 7 4 3

30、题目:一个5位数,判断它是不是回文数。即12321是回文数,个位与万位相同,十位与千位相同。

程序分析:无。

程序源代码:

实例(Python 2.0+)

#!/usr/bin/python# -*-coding: UTF-8 -*- a = int(raw_input("请输入一个数字: ")) x = str(a) flag = True for i in range(len(x)/2): if x[i] != x[-i - 1]: flag = False break if flag: print "%d是一个回文数!" % a else: print "%d不是一个回文数!" % a

以上实例输出结果为:

请输入一个数字:

12321

12321是一个回文数!

Python练习实例一 互联网视频课程

img

廖苡

关注

题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

程序分析:

可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。

程序源代码:

以上实例输出结果为:

使用列表形式,并计算总结:

将for循环和if语句综合成一句,直接打印出结果

参考方法(设置最大,最小值):

python3 下参考方案:

参考方法:

python自带这个函数的

补充一下:

没事找事之位运算

考虑减少冗余判断和循环,做如下优化;

Python3 测试实例

加入了format函数

数量统计用个做自加就够了

参考:

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP