日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

S4 exercise -- 模块

發(fā)布時間:2024/9/3 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 S4 exercise -- 模块 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
  • 寫一個用戶登錄驗證程序,文件如下1234.json
{"expire_date": "2021-01-01", "id": 1234, "status": 0, "pay_day": 22, "password": "abc"}
  • 用戶名為json文件名,密碼為 password。
  • 判斷是否過期,與expire_date進行對比。
  • 登陸成功后,打印“登陸成功”,三次登陸失敗,status值改為1,并且鎖定賬號。
  • 1 # coding:utf-82 import json,os3 import datetime4 # data = {"expire_date": "2021-01-01", "id": 1234, "status": 0, "pay_day": 22, "password": "abc"}5 #6 # f = open('%s.json'%(data['id']),'w',encoding='utf-8')7 #8 # json.dump(data,f)9 # filename = '1234.json' 10 def load_data(file): 11 f = open(file) 12 data = json.load(f) 13 return data 14 def save_data(data): 15 f = open('%s.json'%data['id'],'w') 16 json.dump(data,f) 17 f.close() 18 try_count = 0 19 while True: 20 username = input('username:').strip() 21 password = input('password:').strip() 22 filename = '%s.json'%username 23 if os.path.isfile(filename): 24 data = load_data(filename) 25 expire_date = data['expire_date'] 26 date_now = datetime.datetime.now() 27 if date_now > datetime.datetime.strptime(expire_date,'%Y-%m-%d'): 28 print("賬戶已過期") 29 break 30 elif data['status'] != 0: 31 print('賬戶已被鎖定') 32 break 33 elif data['password'] == password: 34 print('welcome to login'.center(20,'*')) 35 break 36 else: 37 print('wrong password') 38 try_count += 1 39 if try_count == 3: 40 data['status'] = 1 41 save_data(data) 42 break 43 else: 44 print('user not exist') View Code
    • ?把三次驗證的密碼進行hashlib加密處理。即:json文件保存為md5的值,然后用md5的值進行驗證
    1 # coding:utf-82 import json,os3 import datetime4 import hashlib5 6 7 data = {"expire_date": "2021-01-01", "id": 1234, "status": 0, "pay_day": 22, "password": "abc"}8 9 10 # f = open('%s.json'%(data['id']),'w',encoding='utf-8') 11 # 12 # json.dump(data,f) 13 # filename = '1234.json' 14 def load_data(file): 15 f = open(file) 16 data = json.load(f) 17 return data 18 def save_data(data): 19 f = open('%s.json'%data['id'],'w') 20 json.dump(data,f) 21 f.close() 22 23 24 password = bytes(data['password'],encoding='utf-8') 25 m = hashlib.md5(password).hexdigest() 26 data['password'] = m 27 save_data(data) 28 29 try_count = 0 30 while True: 31 username = input('username:').strip() 32 password = input('password:').strip() 33 filename = '%s.json'%username 34 if os.path.isfile(filename): 35 data = load_data(filename) 36 expire_date = data['expire_date'] 37 date_now = datetime.datetime.now() 38 input_pwd = bytes(password,encoding='utf-8') 39 m_input_pwd = hashlib.md5(input_pwd).hexdigest() 40 41 if date_now > datetime.datetime.strptime(expire_date,'%Y-%m-%d'): 42 print("賬戶已過期") 43 break 44 elif data['status'] != 0: 45 print('賬戶已被鎖定') 46 break 47 elif data['password'] == m_input_pwd: 48 print('welcome to login'.center(20,'*')) 49 break 50 else: 51 print('wrong password') 52 try_count += 1 53 if try_count == 3: 54 data['status'] = 1 55 save_data(data) 56 break 57 else: 58 print('user not exist') View Code
    • 寫一個6位隨機驗證碼程序(使用random模塊),要求驗證碼中至少包含一個數(shù)字、一個小寫字母、一個大寫字母.
    1 >>> word = random.choice(string.digits) + random.choice(string.ascii_lowercase) + random.choice(string.ascii_uppercase) + ''.join(random.sample(string.ascii_letters,3)) 2 >>> word 3 '1eIigX' View Code
    • logging模塊有幾個日志級別?
    logging模塊共5個級別,它們分別是:DEBUG INFO WARNING ERROR CRITICAL View Code
    • 請配置logging模塊,使其在屏幕和文件里同時打印以下格式的日志
    2017-10-18 15:56:26,613 - access - ERROR - account [1234] too many login attempts 1 import logging2 3 logger = logging.getLogger('access')4 logger.setLevel(logging.DEBUG)5 ch = logging.StreamHandler()6 fl = logging.FileHandler('access.log')7 logger.addHandler(ch)8 logger.addHandler(fl)9 formatter = logging.Formatter('%(asctime)s-%(name)s-%(levelname)s-%(message)s') 10 ch.setFormatter(formatter) 11 fl.setFormatter(formatter) 12 logger.error("account [1234] too many login attempts") View Code
    • json、pickle、shelve三個區(qū)別是什么?
    首先,這三個模塊都是序列化工具。1. json是所有語言的序列化工具,優(yōu)點跨語言、體積小.只能序列化一些基本的數(shù)據(jù)類型。int\str\list\tuple\dictpickle是python語言特有序列化工具,所有數(shù)據(jù)都能序列化。只能在python中使用,存儲數(shù)據(jù)占空間大.shelve模塊是一個簡單的k,v將內(nèi)存數(shù)據(jù)通過文件持久化的模塊,可以持久化任何pickle可支持的python數(shù)據(jù)格式。2. 使用方式,json和pickle用法一樣,shelve是f = shelve.open('shelve_test') View Code
    • json的作用是什么?
    序列化是指把內(nèi)存里的數(shù)據(jù)類型轉(zhuǎn)變成字符串,以使其能存儲到硬盤或通過網(wǎng)絡(luò)傳輸?shù)竭h程,因為硬盤或網(wǎng)絡(luò)傳輸時只能接受bytes傳輸數(shù)據(jù) View Code
    • subprocess執(zhí)行命令方法有幾種?
    有三種方法,他們分別是run()方法call()方法Popen()方法 View Code
    • 為什么要設(shè)計好目錄結(jié)構(gòu)?
    1.可讀性高: 不熟悉這個項目的代碼的人,一眼就能看懂目錄結(jié)構(gòu),知道程序啟動腳本是哪個,測試目錄在哪兒,配置文件在哪兒等等。從而非??焖俚牧私膺@個項目。2.可維護性高: 定義好組織規(guī)則后,維護者就能很明確地知道,新增的哪個文件和代碼應(yīng)該放在什么目錄之下。這個好處是,隨著時間的推移,代碼/配置的規(guī)模增加,項目結(jié)構(gòu)不會混亂,仍然能夠組織良好。 View Code
    • 打印出命令行的第一個參數(shù)。例如:python argument.py luffy ? ?打印出 luffy
    import sys print(sys.argv[1]) View Code
    • 獲取文件所在目錄代碼如下:
    ''' Linux當前目錄/usr/local/nginx/html/ 文件名:index.html ''' import osBASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath('index.html')))print(BASE_DIR)打印的內(nèi)容是什么? 答案 /usr/local/nginx View Code
    • os.path.dirname和os.path.abspath含義是什么??

    os.path.dirname:指定文件的目錄

    os.path.abspath:指定文件的絕對路徑

    • 通過configparser模塊完成以下功能
    文件名my.ini[DEFAULT][client] port = 3306 socket = /data/mysql_3306/mysql.sock[mysqld] explicit_defaults_for_timestamp = true port = 3306 socket = /data/mysql_3306/mysql.sock back_log = 80 basedir = /usr/local/mysql tmpdir = /tmp datadir = /data/mysql_3306 default-time-zone = '+8:00' q
  • ?修改時區(qū) default-time-zone = '+8:00' 為 校準的全球時間 +00:00
  • 刪除 explicit_defaults_for_timestamp = true
  • ?為DEFAULT增加一條 character-set-server = utf8
  • import configparserconfig = configparser.ConfigParser() config.read('my.ini') config.set('mysqld','default-time-zone','+00:00') config.remove_option('mysqld','explicit_defaults_for_timestamp') config.set('DEFAULT','character-set-server','utf8') config.write(open('my.ini','w')) a [DEFAULT] character-set-server = utf8[client] port = 3306 socket = /data/mysql_3306/mysql.sock[mysqld] port = 3306 socket = /data/mysql_3306/mysql.sock back_log = 80 basedir = /usr/local/mysql tmpdir = /tmp datadir = /data/mysql_3306 default-time-zone = +00:00 o
    • 利用正則表達式提取到 luffycity.com ,內(nèi)容如下
    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>luffycity.com</title> </head> <body> </body> </html> q import re f = open('index.html','r',encoding='utf-8') data = f.read() print(re.findall('luffycity.com',data)) a

    總結(jié)

    以上是生活随笔為你收集整理的S4 exercise -- 模块的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 欧美精品午夜 | 一本色道久久hezyo无码 | 狠狠干夜夜操 | 国产精品欧美一区二区三区 | 孕妇一级片| 天堂在线播放 | 波多野结衣影片 | 日韩少妇内射免费播放18禁裸乳 | av在线入口| 337p日本欧洲亚洲大胆精筑 | 麻豆传媒mv | 日韩精品极品视频在线观看免费 | 久久精国产 | 国产精品亚洲一区 | 中国女人一级一次看片 | 美腿丝袜亚洲综合 | 国产在线伊人 | 黄色aaa| 香蕉视频91| 永久免费未满蜜桃 | 日本丰满熟妇videossex一 | 五月天视频网 | 97超级碰碰人妻中文字幕 | 久久综合桃花网 | 蜜桃一二三区 | 男生操女生逼逼 | 色噜噜狠狠一区二区三区 | 我看黄色一级片 | 日本网站在线 | 福利在线网站 | 天堂资源av| av观看网站 | 欧美50p | 91人妻一区二区三区蜜臀 | 日韩精品一二三 | 影音先锋人妻啪啪av资源网站 | 调教撅屁股啪调教打臀缝av | 伊人操| 国产r级在线 | 久草综合在线 | 成人国产在线 | 亚洲情欲网 | 俺去久久| www.youjizz.com视频| 成人免费网站www网站高清 | 香蕉久久国产 | 国产精品无人区 | 国产精品久久久久久免费播放 | 91成人国产| 日韩精品视频网站 | 日日干夜夜草 | 老司机在线观看视频 | 国内福利视频 | 天堂在线中文字幕 | 国产精品爱啪在线线免费观看 | 中文字幕在线网站 | 日本欧美色图 | 欧美性理论片在线观看片免费 | 污av| 熟妇高潮一区二区 | 日韩人妻精品无码一区二区三区 | 欧美一级不卡 | 成人影视在线播放 | 免费av电影网址 | 丁香色婷婷| 艳妇臀荡乳欲伦交换在线看 | 久久久久久人妻一区二区三区 | 产乳奶汁h文1v1 | 国产v亚洲 | 亚洲综合自拍偷拍 | 动漫美女揉胸 | 日韩欧美国产高清 | 中文字幕一区二区三 | 中文字幕有码av | 久久综合国产 | 婷婷久久五月 | www夜夜操| 激情成人综合 | 色老久久 | 亚洲精品另类 | 91大神精品| av男人的天堂网 | 国产精品久久久久久久久久久久 | 九九资源网 | 日日射天天射 | 97精品国产97久久久久久春色 | 天天干,天天操 | 成年人看的视频网站 | 精品国产美女 | 边打电话边做 | 日韩欧美精品一区二区三区 | 无码人妻aⅴ一区二区三区有奶水 | 老熟妇毛茸茸 | 在线中文字幕观看 | 欧美大片在线看免费观看 | 中文字幕人乱码中文字 | 校霸被c到爽夹震蛋上课高潮 | 国产日韩一区二区三区在线观看 | 亚洲欧美综合自拍 |