摘要:并返回合理錯誤提示。如果不在則再輸入密碼,成功則增加用戶信息到文件中,密碼進(jìn)行加密處理。作業(yè)增加用戶名,密碼的合法化判斷和錯誤提示。
課時5:字符串-基礎(chǔ) 切片,索引
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 #字符串重復(fù) s.upper() s.find("pa") s.replace("python","java") print "%s like %s" %("we","python") strip() #返回去除兩側(cè)空格(不包括內(nèi)部)的字符串轉(zhuǎn)義r""
s="C: ewpython",print s,len(s) r" #前綴字符串,不考慮轉(zhuǎn)義 s=r"C: ewpython"Unicode u""
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個元字符:,^,$,.,|,?,*,(),[],{},
特殊含義:,.
可選:|,[]
重復(fù):*,+,?,{},(貪婪模式)
6個字符類:d,D,s,S,w,W
4個位置類:,B,A,,C^、$)
分組:()
編譯選項:I、L、M、S、U、X
^ start $ end . except + 1-inf * 0-inf ? 0-1 [] or {} repeat [^] not
日期: Datetime.date.today() 日期和時間: datetime.datetime.now() 1000天之后是哪一天: datetime.timedelta(days=1000) 打印格式的問題: Isoformat(),strtime() 字符串轉(zhuǎn)換: strptime()time
Datetime.time(12,11,30) Time.time() #實(shí)際時間 Time.clock() #cpu時間 Time.sleep() #以s為時間
import datetime課時8 列表 切片,索引,引用
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) #對某個元素計數(shù)(多態(tài)函數(shù))元組 不可變的列表
(a,b,c) #不能原處修改常用操作
index count #對某個元素計數(shù) +,* 嵌套: 可嵌套可變的list 轉(zhuǎn)換: tuple()課時9 字典 Key-Value
dict = {"xiaoming":90,"xiaohong":80,"xioamao":60} dict,zip常用操作
Keys,values Get Update Del Clear 嵌套
散列表,沒有順序,適合插入,查詢操作
Key不一定是字符串,但一定是不可變對象(數(shù)字,字符串,元組)。
[(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())]課時10 文件
#常用操作 F = open(path,"r") #返回對象為file-like object #還可以是內(nèi)存,網(wǎng)絡(luò)等,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)課時11 作業(yè)參考 11.1 驗證E-mail正則表達(dá)式
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))11.2 隨機(jī)函數(shù)
利用隨機(jī)函數(shù)產(chǎn)生一個用戶的用戶名,密碼,并利用文件將用戶名和密碼保存下來。
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+" ") f.close()11.3 密碼加密
上面的文件中密碼沒有加密,不安全,請將文件內(nèi)容讀出后將密碼字段通過md5的庫處理后,再保存至另一個文件。
#md5加密數(shù)據(jù)庫 import hashlib hashlib.md5(password).hexdigest()11.4 公交車數(shù)據(jù)讀取,存入字典
#!/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(" ") print jt_info[1] # convert stations info format station_pattern = (r"(?P[0-9]+)s(?P 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[0-9]+)s(?P 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] +=輸入 input
raw_input() #原始輸入 input()輸出
#3.x #函數(shù) print([obj,...][,sep=""][,end=" "][,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")課時13 if語句和for循環(huán)語句
#if if xxx:statement1 elif xxx:statements2 else:statements3
#其他用法 #邏輯表達(dá)式 not/and/or #三元表達(dá)式 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課時14 列表解析和異常 列表解析
列表分析不但解決而且運(yùn)行速度較快。
用法
#去除列表中重復(fù)元素 l1 = ["b","c","d","b","c","a","a"] l2 = [] [l2.append(i) for i in l1 if not in l2] print l2
舉例
>>> iter=(x**2 for x in range(10) if x%2 == 0) >>> iter異常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后語句有異常發(fā)生后執(zhí)行except try/finally #無論異常是否發(fā)生都執(zhí)行finally raise error(meassage) #觸發(fā)異常 Assert condition,message #條件觸發(fā)錯誤,觸發(fā)后打印信息,并終止程序
舉例
a[1] #NameError,a無定義 a = 2; a[1]; #TypeError,定義a為整數(shù),按List去訪問 a = [2];a[1]; #IndexError a = {};a[1]; #KeyError Raise IndexError Assert False,"error occur,please check program"課時15 猜數(shù)字
隨機(jī)產(chǎn)生要猜的數(shù)字
輸入,用于接收用戶輸入的數(shù)字
循環(huán),如果沒猜對則循環(huán)接收輸入,并打出提示信息
猜到數(shù)字或猜測次數(shù)達(dá)到一定次數(shù)后(6次)打印失敗并退出
# coding:utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"你好,我很幸運(yùn),我是一個路過的神仙,我有一個秘密" print u"我的秘密是一個從1到99的數(shù)字,我只會給你6次機(jī)會來猜." print u"如果你猜到它,那說明你很幸運(yùn),趕緊去買彩票吧!" while guess != secret and tries <6: print u"你猜這個數(shù)字是多少?(1-100)" guess = input() if guess == secret: print u"哇~~,真的假的!你居然發(fā)現(xiàn)了我的秘密!它就是" break elif guess < secret: print str(guess),u"太小了,你還差點(diǎn)運(yùn)氣!" elif guess > secret: print str(guess),u"太大了,你還差點(diǎn)運(yùn)氣!" tries +=1 else: print u"你唯一的機(jī)會已被你用完了!看來你還需要再攢點(diǎn)人品!" print u"還是讓我告訴吧!這個數(shù)字:",str(secret)
問題:
輸入非數(shù)字
直接輸入secret(作弊模式)
作業(yè)3-1改進(jìn)猜數(shù)字游戲,放作弊,錯誤輸入判斷
作業(yè)3-2利用上次用戶密碼作業(yè),請模擬注冊過程:用戶輸入用戶名后進(jìn)行檢測用戶名是否在文件中的過程。并返回合理錯誤提示。如果不在則再輸入密碼,成功則增加用戶信息到文件中,密碼進(jìn)行md5加密處理。
作業(yè)3-3增加用戶名,密碼的合法化判斷和錯誤提示。
用戶名:字母,數(shù)字,下劃線和橫線的組合,且首字符應(yīng)是字母,長度不小于4
密碼:字母,數(shù)字,下劃線和橫線的組合,且長度不小于6
循環(huán)上一課的公交系統(tǒng)作業(yè)
利用循環(huán)語句將所有線路的linenum和stations保存到一個字典對象
執(zhí)行后提示輸入公交站名字,在所有公交線路的stations里查詢該名字,并將包含有該名字的公交線路存到一個字進(jìn)行返回。
課時16 3-1# coding:utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"你好,我很幸運(yùn),我是一個路過的神仙,我有一個秘密" print u"我的秘密是一個從1到99的數(shù)字,我只會給你6次機(jī)會來猜." print u"如果你猜到它,那說明你很幸運(yùn),趕緊去買彩票吧!" while guess != secret and tries <6: print u"你猜這個數(shù)字是多少?(1-100)" guess_str =raw_input() try: guess = int(guess_str) except: print u"你輸入的不是整數(shù),請重新輸入:" continue if guess == secret: print u"哇~~,真的假的!你居然發(fā)現(xiàn)了我的秘密!它就是" break elif guess < secret: print str(guess),u"太小了,你還差點(diǎn)運(yùn)氣!" elif guess > secret: print str(guess),u"太大了,你還差點(diǎn)運(yùn)氣!" tries +=1 else: print u"你唯一的機(jī)會已被你用完了!看來你還需要再攢點(diǎn)人品!" print u"還是讓我告訴吧!這個數(shù)字:",str(secret)3-2
# coding:utf-8 import random secret = random.randint(1,100) guess,tries = 0,0 print u"你好,我很幸運(yùn),我是一個路過的神仙,我有一個秘密" print u"我的秘密是一個從1到99的數(shù)字,我只會給你6次機(jī)會來猜." print u"如果你猜到它,那說明你很幸運(yùn),趕緊去買彩票吧!" while guess != secret and tries <6: print u"你猜這個數(shù)字是多少?(1-100)" guess_str =raw_input() try: guess = int(guess_str) except: print u"你輸入的不是整數(shù),請重新輸入:" continue if guess == secret: print u"哇~~,真的假的!你居然發(fā)現(xiàn)了我的秘密!它就是" break elif guess < secret: print str(guess),u"太小了,你還差點(diǎn)運(yùn)氣!" elif guess > secret: print str(guess),u"太大了,你還差點(diǎn)運(yùn)氣!" tries +=1 else: print u"你唯一的機(jī)會已被你用完了!看來你還需要再攢點(diǎn)人品!" print u"還是讓我告訴吧!這個數(shù)字:",str(secret)
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/37860.html
摘要:本文與大家分享一些編程語言的入門書籍,其中不乏經(jīng)典。全書貫穿的主體是如何思考設(shè)計開發(fā)的方法,而具體的編程語言,只是提供一個具體場景方便介紹的媒介。入門入門容易理解而且讀起來幽默風(fēng)趣,對于編程初學(xué)者和語言新手而言是理想的書籍。 本文與大家分享一些Python編程語言的入門書籍,其中不乏經(jīng)典。我在這里分享的,大部分是這些書的英文版,如果有中文版的我也加上了。有關(guān)書籍的介紹,大部分截取自是官...
摘要:某熊的技術(shù)之路做些有趣的產(chǎn)品年初的時候,我就在想,今年的主題詞是什么上半年考慮的較多的是所謂研發(fā)效能的提升,下半年卻漸漸發(fā)現(xiàn)自己更多的會在想產(chǎn)品這兩個字。 showImg(https://segmentfault.com/img/remote/1460000016874425); 2018-某熊的技術(shù)之路: 做些有趣的產(chǎn)品 年初的時候,我就在想,今年的主題詞是什么;上半年考慮的較多的是...
摘要:將的,和包含全部請求參數(shù)的字符串存入管理器。如滿足條件,則當(dāng)前請求不需要發(fā)起。如果參數(shù)不同,或者是人為操作,則視為兩個不同請求。此時取消中的,并將當(dāng)前請求重新注冊。如果不設(shè)置此項,則只會保留最后一次,前面的請求會被掉。 先描述兩個場景: 快速點(diǎn)擊分頁碼1.2.3.4.5...。假設(shè)網(wǎng)絡(luò)不好或接口速度不佳,此時可能有多個pending中請求。而我們無法控制返回順序。假如用戶最后點(diǎn)擊到分...
摘要:如何更好的學(xué)習(xí)一門技術(shù),去把它的官方文檔仔細(xì)看一遍最近這段時間一有空就會去刷一會官方文檔,寫點(diǎn)感受總結(jié)一下。官方文檔上的評論尤其要注意,有不少評論很有價值。 如何更好的學(xué)習(xí)一門技術(shù),去把它的官方文檔仔細(xì)看一遍 最近這段時間一有空就會去刷一會 PHP 官方文檔,寫點(diǎn)感受總結(jié)一下。 起因 我開始學(xué)習(xí)編程應(yīng)該算是在大二學(xué) C語言 課程,到了大三自學(xué) PHP,之后用這門語言做了七八個外包項目,...
摘要:安裝安裝用于數(shù)據(jù)科學(xué)的的最佳方法是使用發(fā)行版。但這只是展示了構(gòu)建數(shù)據(jù)科學(xué)問題的不同方式中的機(jī)器學(xué)習(xí)這是一個重要的主題,機(jī)器學(xué)習(xí)正在風(fēng)靡世界,是數(shù)據(jù)科學(xué)家工作的重要組成部分。 作為編程界的頭牌名媛,Python平易近人的態(tài)度和精明婉約的靈動深得各個大佬歡心。比如:人工智能、web開發(fā)、爬蟲、系統(tǒng)運(yùn)維、數(shù)據(jù)分析與計算等等。這幾位風(fēng)流多金的行業(yè)精英隨便哪個都能逆轉(zhuǎn)未來。 本文為你精心準(zhǔn)備了一...
閱讀 3933·2021-11-24 10:46
閱讀 1821·2021-11-16 11:44
閱讀 2300·2021-09-22 16:02
閱讀 1409·2019-08-30 15:55
閱讀 1136·2019-08-30 12:46
閱讀 570·2019-08-28 18:31
閱讀 2767·2019-08-26 18:38
閱讀 1103·2019-08-23 16:51