#!/usr/bin/env python # -*- coding: utf-8 -*- # name = raw_input() # print #name # a = u'中文输入' # print a # print 'hi,%s,you have $%d' % ('jesse',1000) # # age = 18 # if age >= 50: # print 'laoren' # elif age >= 30: # print #'chengnian' # elif age >= 10: # print 'weichengnian' # names = ['sss','bbb','vvvv','ffff','tttttt'] for name in names: print # name #sum = 0 for x in [1,2,3,4,5,6,7,8,9,10]: sum = sum + x print sum #rang 可以生成1-10000 sum = 0 for x in range(1000): sum = sum +x print sum # sum = 0 n = 99 while n > 0: sum = sum + n n = n-2 print sum # s = set([1,2,3]) print s # print cmp(1,2) print cmp(2,2) 相同返回0,不同返回-1 # print int(12.4) # def xx(x,y): print x*y xx(5,6) # x = 'abc' y = 123 print isinstance(x,str) #isinstance 监测字符串,返回false或者tree # print isinstance(y,str) # def is_odd(n): return n % 2 == 1 print # filter(is_odd,[1,2,3,4,5,6,7,8,9,10]) filter 可以过滤一部分元素 # def not_empty(s): # return s and s.strip() # print filter(not_empty, #['A', '', 'B', None, 'C', ' ']) #删除空格的元素 # def now(): print '2013-12-25' f = now print f() # 在Python中,一个.py文件就称之为一个模块(Module)。 # 如果不同的人编写的模块名相同怎么办?为了避免模块名冲突,Python又引入了按目录来组织模块的方法,称为包(Package)。 # 举个例子,一个abc.py的文件就是一个名字叫abc的模块,一个xyz.py的文件就是一个名字叫xyz的模块。 # 现在,假设我们的abc和xyz这两个模块名字与其他模块冲突了,于是我们可以通过包来组织模块,避免冲突。方法是选择一个顶层包名,比如建立mycompany #文件夹. #引入了包以后,只要顶层的包名不与别人冲突,那所有模块都不会与别人冲突。现在,abc.py模块的名字就变成了mycompany.abc,类似的,x #yz.py的模块名变成了mycompany.xyz。 # 请注意,每一个包目录下面都会有一个__init__.py的文件,这个文件是必须存在的,否则,Python就把这个目录当成普通目录,而不是一个包。__in # it__.py可以是空文件,也可以有Python代码,因为__init__.py本身就是一个模块,而它的模块名就是mycompany。 # import re # m = re.match(r'\d{3}', '123456789') # print m.group(0) # import re # m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345') # print m.group(0) # print m.group(1) # print m.group(2) # # '00\d'可以匹配'007',但无法匹配'00A'; # '\d\d\d'可以匹配'010'; # '\w\w\d'可以匹配'py3'; # .可以匹配任意字符,所以: # 'py.'可以匹配'pyc'、'pyo'、'py!'等等。 # 要匹配变长的字符,在正则表达式中,用*表示任意个字符(包括0个),用+表示至少一个字符,用?表示0个或1个字符,用{n}表示n个字符,用{n,m}表示n-m个字符: # 来看一个复杂的例子:\d{3}\s+\d{3,8}。 # 我们来从左到右解读一下: # \d{3}表示匹配3个数字,例如'010'; # \s可以匹配一个空格(也包括Tab等空白符),所以\s+表示至少有一个空格,例如匹配' ',' '等; # \d{3,8}表示3-8个数字,例如'1234567'。 # 综合起来,上面的正则表达式可以匹配以任意个空格隔开的带区号的电话号码。 # 如果要匹配'010-12345'这样的号码呢?由于'-'是特殊字符,在正则表达式中,要用'\'转义,所以,上面的正则是\d{3}\-\d{3,8}。 # 但是,仍然无法匹配'010 - 12345',因为带有空格。所以我们需要更复杂的匹配方式。 # 要做更精确地匹配,可以用[]表示范围,比如: # [0-9a-zA-Z\_]可以匹配一个数字、字母或者下划线; # [0-9a-zA-Z\_]+可以匹配至少由一个数字、字母或者下划线组成的字符串,比如'a100','0_Z','Py3000'等等; # [a-zA-Z\_][0-9a-zA-Z\_]*可以匹配由字母或下划线开头,后接任意个由一个数字、字母或者下划线组成的字符串,也就是Python合法的变量; # [a-zA-Z\_][0-9a-zA-Z\_]{0, 19}更精确地限制了变量的长度是1-20个字符(前面1个字符+后面最多19个字符)。 # A|B可以匹配A或B,所以(P|p)ython可以匹配'Python'或者'python'。 # ^表示行的开头,^\d表示必须以数字开头。 # $表示行的结束,\d$表示必须以数字结束。 # 你可能注意到了,py也可以匹配'python',但是加上^py$就变成了整行匹配,就只能匹配'py'了。 # re模块 # 有了准备知识,我们就可以在Python中使用正则表达式了。Python提供re模块,包含所有正则表达式的功能。由于Python的字符串本身也用\转义,所以要特别注意: # # s = r'ABC\-001' # Python的字符串 # # 对应的正则表达式字符串不变: # # 'ABC\-001' # 先看看如何判断正则表达式是否匹配: # >>> import re # >>> re.match(r'^\d{3}\-\d{3,8}$', '010-12345') # <_sre.SRE_Match object at 0x1026e18b8> # >>> re.match(r'^\d{3}\-\d{3,8}$', '010 12345') # match()方法判断是否匹配,如果匹配成功,返回一个Match对象,否则返回None。常见的判断方法就是: # test = '用户输入的字符串' # if re.match(r'正则表达式', test): # print 'ok' # else: # print 'failed' # 分组 # 除了简单地判断是否匹配之外,正则表达式还有提取子串的强大功能。用()表示的就是要提取的分组(Group)。比如: # ^(\d{3})-(\d{3,8})$分别定义了两个组,可以直接从匹配的字符串中提取出区号和本地号码: # >>> m = re.match(r'^(\d{3})-(\d{3,8})$', '010-12345') # >>> m # <_sre.SRE_Match object at 0x1026fb3e8> # >>> m.group(0) # '010-12345' # >>> m.group(1) # '010' # >>> m.group(2) # '12345' #base64 加密 # import base64 # print base64.b64encode('binary\x00string') # print base64.b64decode('YmluYXJ5AHN0cmluZw==') # 由于标准的Base64编码后可能出现字符+和/,在URL中就不能直接作为参数,所以又有一种"url safe"的base64编码,其实就是把字符+和/分别变成-和_: # import base64 # print base64.b64encode('i\xb7\x1d\xfb\xef\xff') # print base64.urlsafe_b64encode('i\xb7\x1d\xfb\xef\xff') # print base64.urlsafe_b64decode('abcd--__') import hashlib md5 = hashlib.md5() md5.update('how to use md5 in python hashlib?') print md5.hexdigest()
Python简单的练习二
猜你喜欢
转载自blog.csdn.net/weixin_36171533/article/details/80438545
今日推荐
周排行