网站性能检测评分
注:本网站页面html检测工具扫描网站中存在的基本问题,仅供参考。
python3项目开发实例
小羊学编程之Python爬虫实例 流量视频课程
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小程序-支持多线程聊天实例 小程序视频课程
在上一篇文章中,也分享了一个在python下使用socket来进行通讯的实例,不过那个实例是单线程的,也就是说服务器端和客户端是一对一的,如果客户端不止一个的话,第二个客户端同时执行的话,会导致线程阻塞,也就是会卡住。不过上一个分享的实例也是为了大家先知道python下的socket通讯是怎样的,我觉得那样可能会先让大家容易理解。
这次我给大家带来的还是python中socket相关的一个小程序实例,不过此次不是单线程的了,而是socket多线程通讯的实例,客户端基本上不变,依然可以沿用上一篇文章中的那个客户端的程序,只需要修改一下端口即可。
废话就不多说了,先展示程序实现的效果:
多线程socket服务端的效果:
多线程socket服务端接收3个客户端发送过来的信息并处理
客户端发送的信息,以及服务端将信息处理后返回的信息效果:
客户端a
客户端b
客户端c
下面会把服务端和客户端的程序截图出来,程序里已经有详细的注释,方便大家理解。
多线程socket通讯服务端代码:
socket服务端
客户端代码:
socket客户端
「Python实例」生成16位随机序列号 互联网视频课程
[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) 互联网视频课程
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练习实例一 公司视频课程
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:
可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
程序源代码:
以上实例输出结果为:
使用列表形式,并计算总结:
将for循环和if语句综合成一句,直接打印出结果
参考方法(设置最大,最小值):
python3 下参考方案:
参考方法:
python自带这个函数的
补充一下:
没事找事之位运算
考虑减少冗余判断和循环,做如下优化;
Python3 测试实例
加入了format函数
数量统计用个做自加就够了
参考:
零基础学习Python开发练习实例(3) 公司视频课程
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练习实例一 互联网视频课程
题目:有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?
程序分析:
可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
程序源代码:
以上实例输出结果为:
使用列表形式,并计算总结:
将for循环和if语句综合成一句,直接打印出结果
参考方法(设置最大,最小值):
python3 下参考方案:
参考方法:
python自带这个函数的
补充一下:
没事找事之位运算
考虑减少冗余判断和循环,做如下优化;
Python3 测试实例
加入了format函数
数量统计用个做自加就够了
参考: