中企动力 > 头条 > python实例是什么

网站性能检测评分

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

python实例是什么

几个小例子告诉你, 一行Python代码能做什么 营销视频课程

img

凌乱,

关注

首先你要了解一下Python之禅,一行代码输出“The Zen of Python”:

python -c "importthis""""The Zen of Python, by Tim PetersBeautiful is better than ugly.Explicit is better than implicit.Simple is better than complex.Complex is better than complicated.Flat is better than nested.Sparse is better than dense.Readability counts.Special cases aren't special enough to break the rules.Although practicality beats purity.Errors should never pass silently.Unless explicitly silenced.In the face ofambiguity, refuse thetemptationto guess.There should be one-- and preferably only one --obvious way to do it.Although that way may not be obvious at first unless you're Dutch.Now is better than never.Although never is often better than *right* now.If theimplementationis hard toexplain, it's a bad idea.If theimplementationis easy toexplain, it may be a good idea.Namespaces are one honking great idea -- let's do more of those!"""

从“The Zen of Python”也能看出,Python倡导Beautiful、Explicit、Simple等原则,当然我们接下来要介绍的一行Python能实现哪些好玩的功能,可能和Explicit原则相违背。

(1)一行代码启动一个Web服务

python -m SimpleHTTPServer 8080 # python2python3 -m http.server 8080 #python3

(2)一行代码实现变量值互换

a, b = 1, 2; a, b = b, a

(3)一行代码解决FizzBuzz问题:

FizzBuzz问题:打印数字1到100, 3的倍数打印“Fizz”, 5的倍数打印“Buzz”,既是3又是5的倍数的打印“FizzBuzz”

for x in range(1, 101): print("fizz"[x % 3 * 4:]+"buzz"[x % 5 * 4:] or x)

(4)一行代码输出特定字符"Love"拼成的心形

print(' '.join([''.join([('Love'[(x-y) % len('Love')] if ((x*0.05)**2+(y*0.1)**2-1)**3-(x*0.05)**2*(y*0.1)**3

(5)一行代码输出Mandelbrot图像

Mandelbrot图像:图像中的每个位置都对应于公式N=x+y*i中的一个复数

print(' '.join([''.join(['*'if abs((lambda a: lambda z, c, n: a(a, z, c, n))(lambda s, z, c, n: z if n == 0 else s(s, z*z+c, c, n-1))(0, 0.02*x+0.05j*y, 40))

(6)一行代码打印九九乘法表

print(' '.join([' '.join(['%s*%s=%-2s' % (y, x, x*y) for y in range(1, x+1)]) for x in range(1, 10)]))

(7)一行代码计算出1-100之间的素数(两个版本)

print(' '.join([str(item) for item in filter(lambda x: not [x % i for i in range(2, x) if x % i == 0], range(2, 101))]))print(' '.join([str(item) for item in filter(lambda x: all(map(lambda p: x % p != 0, range(2, x))), range(2, 101))]))

(8)一行代码输出斐波那契数列

print([x[0] for x in [(a[i][0], a.append([a[i][1], a[i][0]+a[i][1]])) for a in ([[1, 1]], ) for i in range(30)]])

(9)一行代码实现快排算法

qsort =lambda arr: len(arr) > 1 and qsort(list(filter(lambda x: x arr[0], arr[1:]))) or arr

(10)一行代码解决八皇后问题

[__import__('sys').stdout.write(' '.join('.' * i + 'Q' + '.' * (8-i-1) for i in vec) + " ======== ") for vec in __import__('itertools').permutations(range(8)) if 8 == len(set(vec[i]+i for i in range(8))) == len(set(vec[i]-i for i in range(8)))]

(11)一行代码实现数组的flatten功能:将多维数组转化为一维

flatten = lambda x: [y for l in x for y in flatten(l)] if isinstance(x, list) else [x]

(12)一行代码实现list,有点类似与上个功能的反功能

array = lambda x: [x[i:i+3] for i in range(0, len(x), 3)]

(13)一行代码实现求解2的1000次方的各位数之和

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

img

Faeroe

关注

[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

鲁梦山

关注

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

洪如凡

关注

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

程序分析:

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

程序源代码:

以上实例输出结果为:

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

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

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

python3 下参考方案:

参考方法:

python自带这个函数的

补充一下:

没事找事之位运算

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

Python3 测试实例

加入了format函数

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

参考:

Python数据分析及可视化实例之正则Re 企业视频课程

img

糜凡阳

关注

1.正则表达式汇总表

先上一张大家都很熟悉的图:

我自己很少用这张表,还的自己写,多累,你说是吧!

2.常用正则表达式

一、校验数字的表达式1 数字:^[0-9]*$2 n位的数字:^d{n}$3 至少n位的数字:^d{n,}$4 m-n位的数字:^d{m,n}$5 零和非零开头的数字:^(0|[1-9][0-9]*)$6 非零开头的最多带两位小数的数字:^([1-9][0-9]*)+(.[0-9]{1,2})?$7 带1-2位小数的正数或负数:^(-)?d+(.d{1,2})?$8 正数、负数、和小数:^(-|+)?d+(.d+)?$9 有两位小数的正实数:^[0-9]+(.[0-9]{2})?$10 有1~3位小数的正实数:^[0-9]+(.[0-9]{1,3})?$11 非零的正整数:^[1-9]d*$ 或 ^([1-9][0-9]*){1,3}$ 或 ^+?[1-9][0-9]*$12 非零的负整数:^-[1-9][]0-9"*$ 或 ^-[1-9]d*$13 非负整数:^d+$ 或 ^[1-9]d*|0$14 非正整数:^-[1-9]d*|0$ 或 ^((-d+)|(0+))$15 非负浮点数:^d+(.d+)?$ 或 ^[1-9]d*.d*|0.d*[1-9]d*|0?.0+|0$16 非正浮点数:^((-d+(.d+)?)|(0+(.0+)?))$ 或 ^(-([1-9]d*.d*|0.d*[1-9]d*))|0?.0+|0$17 正浮点数:^[1-9]d*.d*|0.d*[1-9]d*$ 或 ^(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*))$18 负浮点数:^-([1-9]d*.d*|0.d*[1-9]d*)$ 或 ^(-(([0-9]+.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*.[0-9]+)|([0-9]*[1-9][0-9]*)))$19 浮点数:^(-?d+)(.d+)?$ 或 ^-?([1-9]d*.d*|0.d*[1-9]d*|0?.0+|0)$二、校验字符的表达式1 汉字:^[一-龥]{0,}$2 英文和数字:^[A-Za-z0-9]+$ 或 ^[A-Za-z0-9]{4,40}$3 长度为3-20的所有字符:^.{3,20}$4 由26个英文字母组成的字符串:^[A-Za-z]+$5 由26个大写英文字母组成的字符串:^[A-Z]+$6 由26个小写英文字母组成的字符串:^[a-z]+$7 由数字和26个英文字母组成的字符串:^[A-Za-z0-9]+$8 由数字、26个英文字母或者下划线组成的字符串:^w+$ 或 ^w{3,20}$9 中文、英文、数字包括下划线:^[一-龥A-Za-z0-9_]+$10 中文、英文、数字但不包括下划线等符号:^[一-龥A-Za-z0-9]+$ 或 ^[一-龥A-Za-z0-9]{2,20}$11 可以输入含有^%&',;=?$"等字符:[^%&',;=?$"]+12 禁止输入含有~的字符:[^~"]+三、特殊需求表达式1 Email地址:^w+([-+.]w+)*@w+([-.]w+)*.w+([-.]w+)*$2 域名:[a-zA-Z0-9][-a-zA-Z0-9]{0,62}(/.[a-zA-Z0-9][-a-zA-Z0-9]{0,62})+/.?3 InternetURL:[a-zA-z]+://[^s]* 或 ^http://([w-]+.)+[w-]+(/[w-./?%&=]*)?$4 手机号码:^(13[0-9]|14[5|7]|15[0|1|2|3|5|6|7|8|9]|18[0|1|2|3|5|6|7|8|9])d{8}$5 电话号码("XXX-XXXXXXX"、"XXXX-XXXXXXXX"、"XXX-XXXXXXX"、"XXX-XXXXXXXX"、"XXXXXXX"和"XXXXXXXX):^((d{3,4}-)|d{3.4}-)?d{7,8}$6 国内电话号码(0511-4405222、021-87888822):d{3}-d{8}|d{4}-d{7}7 身份证号(15位、18位数字):^d{15}|d{18}$8 短身份证号码(数字、字母x结尾):^([0-9]){7,18}(x|X)?$ 或 ^d{8,18}|[0-9x]{8,18}|[0-9X]{8,18}?$9 帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$10 密码(以字母开头,长度在6~18之间,只能包含字母、数字和下划线):^[a-zA-Z]w{5,17}$11 强密码(必须包含大小写字母和数字的组合,不能使用特殊字符,长度在8-10之间):^(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{8,10}$12 日期格式:^d{4}-d{1,2}-d{1,2}13 一年的12个月(01~09和1~12):^(0?[1-9]|1[0-2])$14 一个月的31天(01~09和1~31):^((0?[1-9])|((1|2)[0-9])|30|31)$15 钱的输入格式:16 1.有四种钱的表示形式我们可以接受:"10000.00" 和 "10,000.00", 和没有 "分" 的 "10000" 和 "10,000":^[1-9][0-9]*$17 2.这表示任意一个不以0开头的数字,但是,这也意味着一个字符"0"不通过,所以我们采用下面的形式:^(0|[1-9][0-9]*)$18 3.一个0或者一个不以0开头的数字.我们还可以允许开头有一个负号:^(0|-?[1-9][0-9]*)$19 4.这表示一个0或者一个可能为负的开头不为0的数字.让用户以0开头好了.把负号的也去掉,因为钱总不能是负的吧.下面我们要加的是说明可能的小数部分:^[0-9]+(.[0-9]+)?$20 5.必须说明的是,小数点后面至少应该有1位数,所以"10."是不通过的,但是 "10" 和 "10.2" 是通过的:^[0-9]+(.[0-9]{2})?$21 6.这样我们规定小数点后面必须有两位,如果你认为太苛刻了,可以这样:^[0-9]+(.[0-9]{1,2})?$22 7.这样就允许用户只写一位小数.下面我们该考虑数字中的逗号了,我们可以这样:^[0-9]{1,3}(,[0-9]{3})*(.[0-9]{1,2})?$23 8.1到3个数字,后面跟着任意个 逗号+3个数字,逗号成为可选,而不是必须:^([0-9]+|[0-9]{1,3}(,[0-9]{3})*)(.[0-9]{1,2})?$24 备注:这就是最终结果了,别忘了"+"可以用"*"替代如果你觉得空字符串也可以接受的话(奇怪,为什么?)最后,别忘了在用函数时去掉去掉那个反斜杠,一般的错误都在这里25 xml文件:^([a-zA-Z]+-?)+[a-zA-Z0-9]+\.[x|X][m|M][l|L]$26 中文字符的正则表达式:[一-龥]27 双字节字符:[^-] (包括汉字在内,可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1))28 空白行的正则表达式:s* (可以用来删除空白行)29 HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? /> (网上流传的版本太糟糕,上面这个也仅仅能部分,对于复杂的嵌套标记依旧无能为力)30 首尾空白字符的正则表达式:^s*|s*$或(^s*)|(s*$) (可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式)31 腾讯QQ号:[1-9][0-9]{4,} (腾讯QQ号从10000开始)32 中国邮政编码:[1-9]d{5}(?!d) (中国邮政编码为6位数字)33 IP地址:d+.d+.d+.d+ (提取IP地址时有用)34 IP地址:((?:(?:25[0-5]|2[0-4]\d|[01]?\d?\d)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d?\d))

是不是觉得哪来主义有点不好意思?

3.万能法则

3.1 贪婪与非贪婪匹配

如:str="ab123c"

p1="ab.*?c"

p2="ab(.*?)c"

贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p1匹配字符串str,结果就是匹配到:ab123c。

非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p2匹配字符串str,结果就是匹配到:123。

注意:在实践中,正则没必要一口就吞个胖子,可以降阶匹配,少费点脑力,后面结合BeautifulSoup,就更简单啦。

3.2 多行匹配

re.S:.将会匹配换行符,默认.不会匹配换行符。(Python Cookbook的方法OUT啦)

>>> re.findall("a(d+)b.+a(d+)b", "a23ba34b") []>>> re.findall("a(d+)b.+a(d+)b", "a23ba34b", re.S) [('23', '34')]

re.M:^$标志将会匹配每一行,默认^和$只会匹配第一行:

>>> re.findall("^a(d+)b", "a23ba34b") ['23']>>> re.findall("^a(d+)b", "a23ba34b", re.M) ['23', '34']

如果没有^标志:

>>> re.findall("a(d+)b", "a23ba23b") ['23', '23']

具体的例子稍后会用爬虫实例进行解说。

4.常用内置函数

以下代码在Jupyter中调试运行。

# In[1]:import re# ## re.match & re.search# 在 `re` 模块中, `re.match` 和 `re.search` 是常用的两个方法:## re.match(pattern, string[, flags])# re.search(pattern, string[, flags])## 两者都寻找第一个匹配成功的部分,成功则返回一个 `match` 对象,不成功则返回 `None`,不同之处在于 `re.match` 只匹配字符串的开头部分,而 `re.search` 匹配的则是整个字符串中的子串。# ## re.findall & re.finditer# `re.findall(pattern, string)` 返回所有匹配的对象, `re.finditer` 则返回一个迭代器。# ## re.split# `re.split(pattern, string[, maxsplit])` 按照 `pattern` 指定的内容对字符串进行分割。# ## re.sub# `re.sub(pattern, repl, string[, count])` 将 `pattern` 匹配的内容进行替换。# ## repile# `repile(pattern)` 生成一个 `pattern` 对象,这个对象有匹配,替换,分割字符串的方法。# ## 例子# 假设我们要匹配这样的字符串:# In[2]:string = 'hello world'pattern = 'hello (w+)'match = re.match(pattern, string)print(match)# 一旦找到了符合条件的部分,我们便可以使用 `group` 方法查看匹配的部分:# In[3]:if match is not None: print(match.group(0))# In[4]:if match is not None: print(match.group(1))# 我们可以改变 string 的内容:# In[5]:string = 'hello there'pattern = 'hello (w+)'match = re.match(pattern, string)if match is not None: print(match.group(0)) print(match.group(1))# 通常,`match.group(0)` 匹配整个返回的内容,之后的 `1,2,3,...` 返回规则中每个括号(按照括号的位置排序)匹配的部分。## 如果某个 `pattern` 需要反复使用,那么我们可以将它预先编译:# In[7]:pattern1 = repile('hello (w+)')match = pattern1.match(string)if match is not None: print(match.group(1))# 由于元字符的存在,所以对于一些特殊字符,我们需要使用 `''` 进行逃逸字符的处理,使用表达式 `'\'` 来匹配 `''` 。## 但事实上,`Python` 本身对逃逸字符也是这样处理的:# In[9]:pattern = '\'print(pattern)# 因为逃逸字符的问题,我们需要使用四个 `'\\'` 来匹配一个单独的 `''`:# In[10]:pattern = '\\'path = "C:\foo\bar\baz.txt"print(re.split(pattern, path))# 这样看起来十分麻烦,好在 `Python` 提供了 `raw string` 来忽略对逃逸字符串的处理,从而可以这样进行匹配:# In[11]:pattern = '\'path = "C\fo\ba\baz.txt"print(re.split(pattern, path))

5.正则调试器(基于tkinter)

2015年学Tkinter的时候整理了一个正则调试器完整代码,有兴趣的小伙伴可以玩玩!

至于打包成exe文件,我推荐CXfreeze。

# -*-ecoding=utf-8-*-# !/usr/bin/env python"""Basic regular expression demostration facility (Perl style syntax)."""# 载入相应的库或模块2015-7-25 by yeayeefrom tkinter import *# 导入re正则import re# 定义一个对象class ReDemo: # 初始化属性,其中参数self是默认的参数 def __init__(self, master): self.master = master self.promptdisplay = Label(self.master, anchor=W, text="正则表达式:") self.promptdisplay.pack(side=TOP, fill=X) self.regexdisplay = Entry(self.master) self.regexdisplay.pack(fill=X) self.regexdisplay.focus_set() self.addoptions() self.statusdisplay = Label(self.master, text="", anchor=W) self.statusdisplay.pack(side=TOP, fill=X) self.labeldisplay = Label(self.master, anchor=W, text="字 符 串:") self.labeldisplay.pack(fill=X) self.labeldisplay.pack(fill=X) self.showframe = Frame(master) self.showframe.pack(fill=X, anchor=W) self.showvar = StringVar(master) self.showvar.set("first") self.stringdisplay = Text(self.master, width=60, height=4) self.stringdisplay.pack(fill=BOTH, expand=1) self.stringdisplay.tag_configure("hit", background="yellow") self.grouplabel = Label(self.master, text="匹配结果:", anchor=W) self.grouplabel.pack(fill=X) self.grouplist = Listbox(self.master) self.grouplist.pack(expand=1, fill=BOTH) self.regexdisplay.bind('', self.recompile) self.stringdisplay.bind('', self.reevaluate) selfpiled = None self.recompile() btags = self.regexdisplay.bindtags() self.regexdisplay.bindtags(btags[1:] + btags[:1]) btags = self.stringdisplay.bindtags() self.stringdisplay.bindtags(btags[1:] + btags[:1]) # 定义方法,也就是所谓的函数 def addoptions(self): self.frames = [] self.boxes = [] self.vars = [] name1 = ['IGNORECASE', 'LOCALE', 'MULTILINE', 'DOTALL', 'VERBOSE'] name2 = ['不区分大小写', '本地化识别', '忽略^和$', '忽略换行符', '松散正则'] for name in range(0, 5): if len(self.boxes) % 3 == 0: frame = Frame(self.master) frame.pack(fill=X) self.frames.append(frame) val = getattr(re, name1[name]) var = IntVar() box = Checkbutton(frame, variable=var, text=name2[name], offvalue=0, onvalue=val, command=self.recompile) box.pack(side=LEFT) self.boxes.append(box) self.vars.append(var) def getflags(self): flags = 0 for var in self.vars: flags = flags | var.get() flags = flags return flags def recompile(self, event=None): try: print (self.regexdisplay.get(), 000) selfpiled = repile(self.regexdisplay.get(), self.getflags()) bg = self.promptdisplay['background'] self.statusdisplay.config(text="", background=bg) except (re.error, msg): selfpiled = None self.statusdisplay.config( text="正则错误: %s" % str(msg), background="red") self.reevaluate() def reevaluate(self, event=None): try: self.stringdisplay.tag_remove("hit", "1.0", END) except TclError: pass try: self.stringdisplay.tag_remove("hit0", "1.0", END) except TclError: pass self.grouplist.delete(0, END) if not selfpiled: return self.stringdisplay.tag_configure("hit", background="yellow") self.stringdisplay.tag_configure("hit0", background="orange") text = self.stringdisplay.get("1.0", END) last = 0 nmatches = 0 while last <= len(text): m = selfpiled.findall(text, last) if m[0] == '' and m[0] == '': break if len(m) != 0: for i in range(len(m)): g = u"第%d个: %s" % (i + 1, m[i]) self.grouplist.insert(END, g) nmatches = nmatches + 1 if self.showvar.get() == "first": break if nmatches == 0: self.statusdisplay.config(text="(不匹配)", background="yellow") else: self.statusdisplay.config(text="")def main(): pass root = Tk() demo = ReDemo(root) root.title('Python正则测试器') root.protocol('WM_DELETE_WINDOW', root.quit) root.mainloop()if __name__ == '__main__': main()

胶水语言博大精深,

本主只得一二为新人带路,

来自:Python数据分析及可视化实例 作者 yeayee

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

羊雪兰

关注

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文件中。

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

img

在线咨询

建站在线咨询

img

微信咨询

扫一扫添加
动力姐姐微信

img
img

TOP