s = "use python do somenthing s[1],s[-1],s[1:3],s[1:6:2],s[1:],s[:-1],s[:] spilt,join,[start:stop:step]
"let us" + s, s*2 #字符串重複 s.upper() s.find('pa') s.replace('python','java') print "%s like %s" %('we','python') strip() #返回去除兩側空格(不包括內部)的字符串
r''
s="C:\newpython",print s,len(s) r'\n\ #前綴字符串,不考慮轉義 s=r"C:\newpython"
coding:utf-8
import re # Regular expression re.match(p,text) re.search(p,text) re.findall(p,text) re.split(p,text) re.sub(p,s,text) pattern = re.compile(p) results = pattern.match(text)
11個元字符:\
,^
,$
,.
,|
,?
,*
,()
,[]
,{}
,
特殊含義:\
,.
可選:|
,[]
重複:*
,+
,?
,{}
,(貪婪模式)
6個字符類:\d
,\D
,\s
,\S
,\w
,\W
4個位置類:\b
,\B
,\A
,\Z
,C^
、$)
分組:()
編譯選項:I
、L
、M
、S
、U
、X
javascript
^ start $ end . except \n + 1-inf * 0-inf ? 0-1 [] or {} repeat [^] not
日期: Datetime.date.today() 日期和時間: datetime.datetime.now() 1000天以後是哪一天: datetime.timedelta(days=1000) 打印格式的問題: Isoformat(),strtime() 字符串轉換: strptime()
Datetime.time(12,11,30) Time.time() #實際時間 Time.clock() #cpu時間 Time.sleep() #以s爲時間
import datetime
a = [1,2,3] a_ref = a a[2] = 100
a_copy=a[:] a.append(300) a.insert(1,50) a.pop() a.sort() a.reverse() del a[1]
b = [a,a_ref,a_copy] c = [1,2,'123','abc'] +,* Count(val) #對某個元素計數(多態函數)
(a,b,c) #不能原處修改
index count #對某個元素計數 +,* 嵌套: 可嵌套可變的list 轉換: tuple()
dict = {'xiaoming':90,'xiaohong':80,'xioamao':60} dict,zip
Keys,values Get Update Del Clear 嵌套
散列表,沒有順序,適合插入,查詢操做php
Key
不必定是字符串,但必定是不可變對象(數字,字符串,元組)。java
[(k,dict[k] for k ins sorted(dict,keys())] #列表解析 sorted(dict.iteritems()key=lambda d:d[1],reverse=True)
#引用 L = [4,5,6] X = L*4,Y = [L]*4 L[1] = 0 print X,Y #淺拷貝 字典D.copy(),copy.copy(D) 列表L[:] #深拷貝 copy.deepcopy(D)
#將兩個等長度的list合併成dict text = 'C++ python shell ruby java javascript c' code_num = [38599,100931,26153,93142,84275,184220] text_list = text.split(' ') code_dict = dict(zip(text_list,code_num)) #get a = code_dict.get('fortran',None) #update,del,copy,clear other_code = {'php':78014,'objective-c':34444} code_dict.update(other_code) del code_dict['c++'] #sort key and value 列表解析 [(k,a_copy[k]) for k in sorted(a_copy.keys())]
#經常使用操做 F = open(path,'r') #返回對象爲file-like object #還能夠是內存,網絡等,r,w,a F.read() F.readline() F.write() F.close() #中文支持 import codecs f = codecs.open(filename,mode,encoding) #文件操做 import os os.path.exists(filename) os.rename(old,new)
#Shelve庫 import shelve D = Shelve.open(file) D['name']='newtext' D.close() #Pickle/cPickle import cPickle f = open(file,mode) cPickle.dump(obj,f) Obj = cPickle.load(f)
import re text='aaa@163.com chu-tian-shu_1981@heibanke2015.com abc-fff@xfd.org ccc_fd2@fff.edu aaa@111 com' print(re.findall(r'(\w+[-\w]*)@([a-zA-Z0-9]+)\.(com|org|edu)',text))
利用隨機函數產生一個用戶的用戶名,密碼,並利用文件將用戶名和密碼保存下來。python
import random charactor='abcdefghijklmnopqrstuvwxyz0123456789' len_char = len(charactor)-1 # generate name a=[0]*4 a[0]=charactor[random.randint(0,len_char)] a[1]=charactor[random.randint(0,len_char)] a[2]=charactor[random.randint(0,len_char)] a[3]=charactor[random.randint(0,len_char)] name=''.join(a) # generate password a=[0]*6 a[0]=charactor[random.randint(0,len_char)] a[1]=charactor[random.randint(0,len_char)] a[2]=charactor[random.randint(0,len_char)] a[3]=charactor[random.randint(0,len_char)] a[4]=charactor[random.randint(0,len_char)] a[5]=charactor[random.randint(0,len_char)] password=''.join(a) #write file f=open('a.txt','w') f.write(name+','+password+'\n') f.close()
上面的文件中密碼沒有加密,不安全,請將文件內容讀出後將密碼字段經過md5的庫處理後,再保存至另外一個文件。c++
#md5加密數據庫 import hashlib hashlib.md5(password).hexdigest()
#!/usr/bin/env python # coding: utf-8 import codecs import re # read the file # f=codecs.open('beijing_jt.csv','r','utf-8') # read_list=[] # read_tmp=f.readline() # for i in range(0,39): # read_tmp=f.readline() # read_list.append(read_tmp) # f.close() f=codecs.open('beijing_jt.csv','r','utf-8') read_tmp_total=f.readlines() f.close() # get linenum and stations information s_tmp=''.join(read_tmp_total[1:40]) #read_list jt_info=s_tmp.split(',') jt_stations = jt_info[-1].split('\r\n \r\n') print jt_info[1] # convert stations info format station_pattern = (r'(?P<number>[0-9]+)\s(?P<name>\D+)') station_list = [] stations = re.findall(station_pattern,jt_info[-1]) for tmp in stations: print tmp[0],tmp[1].strip() station_list.append(tmp[1].strip()) print "-------------------------------------------------" for tmp in jt_stations: stations = re.search(station_pattern,tmp.strip()) print stations.group('number'),stations.group('name') result={} result[jt_info[1]]=station_list print result
# coding: utf-8 import csv import re csvfile = open('beijing_jt.csv','r') reader = csv.reader(csvfile) reader.next() jt_info = reader.next() print jt_info[1].decode('utf-8') csvfile.close() # convert stations info format station_pattern = (r'(?P<number>[0-9]+)\s(?P<name>\D+)') station_list = [] stations = re.findall(station_pattern,jt_info[-1].decode('utf-8')) for tmp in stations: print tmp[0],tmp[1].strip() station_list.append(tmp[1].strip()) result={} result[jt_info[1]]=station_list print result
a,b = 1,2 a,b = "bj",'sh" a,b = "bj" a = b = "bj" a,*b = "beijing" a,b = (1,2) a,b = [1,2] +=
raw_input() #原始輸入 input()
#3.x #函數 print([obj,...][,sep=''][,end='\n'][,file=sys.stdout] #2.x #語句 print a,b print >> file,a,b print '%d,%d,%s'%(a,b,c) print"{0}like{1}".format('we','python') print"{a} like {b}".format(a='we',b='python')
#if if xxx:statement1 elif xxx:statements2 else:statements3
#其餘用法 #邏輯表達式 not/and/or #三元表達式 a = y if x > 0 else z #避免混用Tab和空格 #Pass #分號 #換行:括號匹配和反斜線
#while/else While xxx: statements1 if xxx:break/continue else: statements
#for/else #列表,字符串,元組,字典,文件 for x on objects: statenments if xxx:break/continue else: statements 2
列表分析不但解決並且運行速度較快。正則表達式
用法objective-c
#去除列表中重複元素 l1 = ['b','c','d','b','c','a','a'] l2 = [] [l2.append(i) for i in l1 if not in l2] print l2
舉例shell
>>> iter=(x**2 for x in range(10) if x%2 == 0) >>> iter <gennerator object <genexpr> at 0x02419CB0 >>> for el in iter: print el print[(x,y) for x in (1,2,3,4) for y in (10,15,3,22) if x*y > 25]
用法數據庫
try/except #try後語句有異常發生後執行except try/finally #不管異常是否發生都執行finally raise error(meassage) #觸發異常 Assert condition,message #條件觸發錯誤,觸發後打印信息,並終止程序
舉例express
a[1] #NameError,a無定義 a = 2; a[1]; #TypeError,定義a爲整數,按List去訪問 a = [2];a[1]; #IndexError a = {};a[1]; #KeyError Raise IndexError Assert False,"error occur,please check program"
隨機產生要猜的數字
輸入,用於接收用戶輸入的數字
循環,若是沒猜對則循環接收輸入,並打出提示信息
猜到數字或猜想次數達到必定次數後(6次)打印失敗並退出
# coding:utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"你好,我很幸運,我是一個路過的神仙,我有一個祕密" print u"個人祕密是一個從1到99的數字,我只會給你6次機會來猜." print u"若是你猜到它,那說明你很幸運,趕忙去買彩票吧!" while guess != secret and tries <6: print u"你猜這個數字是多少?(1-100)" guess = input() if guess == secret: print u"哇~~,真的假的!你竟然發現了個人祕密!它就是" break elif guess < secret: print str(guess),u"過小了,你還差點運氣!" elif guess > secret: print str(guess),u"太大了,你還差點運氣!" tries +=1 else: print u"你惟一的機會已被你用完了!看來你還須要再攢點人品!" print u"仍是讓我告訴吧!這個數字:",str(secret)
問題:
輸入非數字
直接輸入secret
(做弊模式)
改進猜數字遊戲,放做弊,錯誤輸入判斷
利用上次用戶密碼做業,請模擬註冊過程:用戶輸入用戶名後進行檢測用戶名是否在文件中的過程。並返回合理錯誤提示。若是不在則再輸入密碼,成功則增長用戶信息到文件中,密碼進行md5加密處理。
增長用戶名,密碼的合法化判斷和錯誤提示。
用戶名:字母,數字,下劃線和橫線的組合,且首字符應是字母,長度不小於4
密碼:字母,數字,下劃線和橫線的組合,且長度不小於6
循環上一課的公交系統做業
利用循環語句將全部線路的linenum
和stations
保存到一個字典對象
執行後提示輸入公交站名字,在全部公交線路的stations
裏查詢該名字,並將包含有該名字的公交線路存到一個字進行返回。
# coding:utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"你好,我很幸運,我是一個路過的神仙,我有一個祕密" print u"個人祕密是一個從1到99的數字,我只會給你6次機會來猜." print u"若是你猜到它,那說明你很幸運,趕忙去買彩票吧!" while guess != secret and tries <6: print u"你猜這個數字是多少?(1-100)" guess_str =raw_input() try: guess = int(guess_str) except: print u"你輸入的不是整數,請從新輸入:" continue if guess == secret: print u"哇~~,真的假的!你竟然發現了個人祕密!它就是" break elif guess < secret: print str(guess),u"過小了,你還差點運氣!" elif guess > secret: print str(guess),u"太大了,你還差點運氣!" tries +=1 else: print u"你惟一的機會已被你用完了!看來你還須要再攢點人品!" print u"仍是讓我告訴吧!這個數字:",str(secret)
# coding:utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"你好,我很幸運,我是一個路過的神仙,我有一個祕密" print u"個人祕密是一個從1到99的數字,我只會給你6次機會來猜." print u"若是你猜到它,那說明你很幸運,趕忙去買彩票吧!" while guess != secret and tries <6: print u"你猜這個數字是多少?(1-100)" guess_str =raw_input() try: guess = int(guess_str) except: print u"你輸入的不是整數,請從新輸入:" continue if guess == secret: print u"哇~~,真的假的!你竟然發現了個人祕密!它就是" break elif guess < secret: print str(guess),u"過小了,你還差點運氣!" elif guess > secret: print str(guess),u"太大了,你還差點運氣!" tries +=1 else: print u"你惟一的機會已被你用完了!看來你還須要再攢點人品!" print u"仍是讓我告訴吧!這個數字:",str(secret)