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

网站性能检测评分

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

python3项目开发实例

小羊学编程之Python爬虫实例 流量视频课程

img

袁友琴

关注

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下使用socket来进行通讯的实例,不过那个实例是单线程的,也就是说服务器端和客户端是一对一的,如果客户端不止一个的话,第二个客户端同时执行的话,会导致线程阻塞,也就是会卡住。不过上一个分享的实例也是为了大家先知道python下的socket通讯是怎样的,我觉得那样可能会先让大家容易理解。

这次我给大家带来的还是python中socket相关的一个小程序实例,不过此次不是单线程的了,而是socket多线程通讯的实例,客户端基本上不变,依然可以沿用上一篇文章中的那个客户端的程序,只需要修改一下端口即可。

废话就不多说了,先展示程序实现的效果:

多线程socket服务端的效果:

多线程socket服务端接收3个客户端发送过来的信息并处理

客户端发送的信息,以及服务端将信息处理后返回的信息效果:

客户端a

客户端b

客户端c

下面会把服务端和客户端的程序截图出来,程序里已经有详细的注释,方便大家理解。

多线程socket通讯服务端代码:

socket服务端

客户端代码:

socket客户端

「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开发练习实例(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