#! /usr/bin/env python2.7# -*- coding:utf-8 -*-#File:w7.py#Date:2013-7-18#Author:wangyuimport reimport sqlite3"""當你感到有些日子先當難過的時候,那你一定經曆一些不一樣的東西,這些東西會讓你變的更加強大,謝謝世界給我的苦難和思考""""""開始學習Regex""""""郵箱註冊系統"""class e_mail: def xuanze(self,xuanxian): if (xuanxian=='z'): print "歡迎註冊" elif (xuanxian=='d'): print "歡迎登入" else: print "輸入錯誤請重新輸入" return xuanxian def zhuce(self): a=True conn=sqlite3.connect('/home/wy/py/test/test/bin/e_mail') conn.isolation_level=None#這個就是事物隔離等級,預設是自己需要的commit才能修改資料庫,設定為None則自動每次修改都提交,否則為"" c=conn.cursor() c.execute('''create table if not exists zhuce7(username txt FRIMARY KEY, password txt, liuyan NCHAR(256) ) ''') c.execute('''select username,password from zhuce7;''') while a==True: username=raw_input("請輸入您的註冊帳號:") # print "nima" m=re.match(r"^([a-zA-Z0-9]+[-\\|.]?)+[a-zA-Z0-9]@([0-9A-Za-z]+(-[a-z0-9A-Z]+)?\.)+[a-zA-Z]{2,}$",username); # print m if m: d=c.fetchall() i=0 for (s,b) in d: while True: if s==username: print "您註冊的"+str(username)+"帳號已經被註冊,請你重新註冊" username=raw_input("請輸入您的註冊帳號:") # print "wocao" else: a=False break break else: print "你的郵箱"+str(username)+"格式錯誤,請重新填寫" username=raw_input("請重新填寫您的郵箱") while True: password=raw_input("請輸入您的密碼:") pwd=re.match(r"^([a-zA-Z0-9])",password) if (pwd and (len(password)<9)): print "密碼過短,或者不符合格式" else: break while True: password1=raw_input("請再次輸入您的密碼:") if (password!=password1): print "兩次輸入不一致,請重新輸入" else: break while True: if (pwd and (len(password)<9)): print "密碼過短,或者不符合格式" else: break while True: yzm=int(raw_input("請輸入您的驗證碼:123+123=?:")) if yzm!=246: print "驗證碼錯誤請重新輸入" else: break print "郵箱註冊成功,注意保管自己的密碼" c.execute('''insert into zhuce7(username,password) values(?,?)''',(username,password) ) conn.commit() # 自動認可插入資料 c.close() def denglu(self): username1=raw_input("請輸入使用者名稱:") password1=raw_input("請輸入密碼:") conn=sqlite3.connect('/home/wy/py/test/test/bin/e_mail') conn.isolation_level=None d=conn.cursor() d.execute('''select username,password from zhuce7; ''') up=d.fetchall() count =0 a=len(up) while True: if (up[count][0]==username1): print up[count][0] # 這個迴圈輸出的是一個二元表,所以直接驗證二元表裡面的資料就好 if ( password1==up[count][1]): print "登入成功" #開始留言 ce=int(raw_input("是否發信:發信請輸入:1\n不發請輸入:2\n")) if ce==1: liuyan =str(raw_input("請在此處寫下您的發件內容:")) # ceshi=liuyan.decode('utf-8').encode('gbk') d.execute('''update zhuce7 set liuyan=? where username=? ''',(liuyan,username1) ) break else: return 0 else: print "密碼不正確,請注意大小寫" break count=count+1 a=a-1 if (a==0): print "帳號沒有註冊,請重新輸入" break return 0if __name__=='__main__': """剛剛在測試的時候發現,python的容錯系統是一個有限數組,比如我測試檔案輸入選項時,提示錯誤次數超過一定次數,就會終止程式""" app=e_mail() print "++++++++++++++感謝您的使用++++++++++++++" while True: try: xuanxian=raw_input("請選擇:\n註冊輸入:z\n登入輸入:d\n").strip()[0].lower() except(EOFError,KeyboardInterrupt): xuanxian=c if xuanxian not in 'zd': print "您輸入的索引值為[%s]輸入不合法,請重新輸入"%xuanxian else: break app.xuanze(xuanxian) if (xuanxian=='z'): app.zhuce() elif(xuanxian=='d'): app.denglu()
這個其中有幾個bug,我沒有處理!原因是我不能很好的使用try,所以還需要改進一下!