一:算法回顾:

冒泡算法,也叫冒泡排序,其特点如下:

1.比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3.针对所有的元素重复以上的步骤,除了最后一个。

4.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

使用python的冒泡排序完成一组无序队列的排序:

data = [10,4,33,21,54,3,8,11,5,22,2,2,2,1,17,13,6]
print(data,"原队列")
for j in range(1,len(data)-2): #大循环,列表队列总长度减2,因为下面比较的是根据元素的下标就向后推移了两个下标位
for i in range(len(data)-j): #每次小循环的次数减去大循环已经循环过的次数,因为大循环每循环一次就将将一个最大的元素放在了最右侧,次元素就不需要循环了
if data[i] > data[i+1]: #假入第一个元素大于第二个元素
tmp = data[i+1] #第一步先把第二个元素保存至一个临时变量
data[i+1] = data[i] #第二步把第二个元素的值等于前面一个较大的元素的值
data[i] = tmp #第三步把前一个元素等于后面较小元素的的临时变量,这样就完成了位置的替换
print(data,"冒泡排序后的队列")
[10, 4, 33, 21, 54, 3, 8, 11, 5, 22, 2, 2, 2, 1, 17, 13, 6] 原队列
[1, 2, 2, 2, 3, 4, 5, 6, 8, 10, 11, 13, 17, 21, 22, 33, 54] 冒泡排序后的队列

执行结果:

二分查找,使用递归函数完成:

def search(data,n): #定义函数传递两个参数,data是要查找的列表,n是首要查找的值
mid = int(len(data)/2) #取中间值
if len(data) >= 1 : #假如队列的长度大于等于1
if data[mid] > n: #大于等于之后判断中间值是否大于要查找的值,如果大于要查找的值
print("要查找的%s 在左侧" % data[mid]) #
search(data[:mid],n) #调用函数本身并将中间的值和要查找的值传递给函数,取队列的左半部分的元素
#print(mid)
elif data[mid] < n: #如果小于n
print("要查找的 %s在右侧" % data[mid])
search(data[mid:],n) #取队列的右半部分的元素值和要查找的值传递给函数
#print(mid)
else: #如果既不大于等于n也不小于n,就是找到了要查找的值
print("找到了%s" % n)
else: #如果没有找到
print("找不到了%s " % n) if __name__ == "__main__": #主程序执行
data = list(range(100000)) #生成列表
search(data,13560) #调用函数并将列表和要查找的值传递给函数
要查找的50000 在左侧
要查找的25000 在左侧
要查找的 12500在右侧
要查找的18750 在左侧
要查找的15625 在左侧
要查找的14062 在左侧
要查找的 13281在右侧
要查找的13671 在左侧
要查找的 13476在右侧
要查找的13573 在左侧
要查找的 13524在右侧
要查找的 13548在右侧
找到了13560

执行结果:

二:写一个简单的Web框架模块:

要求:有处理前端页面展现、后端提交和处理数据库请求的

过程:

1,创建一个Python Package叫shop,和directory最大区别是多了一个空的__init__文件,用于不同目录导入模块,在python3没有也可以,

2,在shop创建一个Python Package创建一个frontend,backend,config用于前端、后端和配置文件信息

3,在后端backend目录创建Python Package目录db和logic,负责数据库请求和逻辑请求处理

4,在config创建python文件settings,保存配置信息,如资源保存路径等

5,解耦,并行开发一个程序,相互可以通过接口调用,提高开发效率及代码利用率

6,在logic目录创建一个python文件handle,用户处理逻辑请求,内容如下:

def home():
print("welcome to home page") def movie():
print("welcome to movie page") def tv():
print("welcome to tv page")

7,在shop目录创建一个python文件叫index,在里面导入logic里面的handle模块,内容如下:

from backend.logic import  handle #shop目录下
handle.home() #执行该模块的方法
handle.tv() #执行该模块的方法

测试:现在运行index程序是可以显示home和tv函数返回的数据

8.在db目录创建一个python文件叫sql_api,内容如下:

def select(table,column):
if table == "user":
user_info = {
"":["jack",28,"IT"],
"":["tom",24,"IT"],
"":["lyly",26,"IT"],
}
return user_info

9,在handle导入sql_api模块,内容如下:

from backend.db.sql_api import  select #跨目录导入模块

def home():
print("welcome to home page")
q_data = select("user","abc") #执行导入模块的参数,并传递一个user的值,abc的值没有用到
print("query res: %s " % q_data) #输出select函数的执行结果
def movie(): print("welcome to movie page") def tv(): print("welcome to tv page")

10,测试--》执行index主程序,其会返回读取的数据信息,正常如下:

welcome to home page
query res: {'': ['jack', 28, 'IT'], '': ['tom', 24, 'IT'], '': ['lyly', 26, 'IT']}
welcome to tv page

11,增加数据库登录验证:

在config创建settings文件,保存配这和验证信息,内容如下:

DATABASE = {
"engine":"mysql",
"host":"localhost",
"port":"",
"user":"root",
"password":"",
}

12,编辑sql_api导入验证信息,内容如下:

from  config import  settings

def db_auth(configs):
if configs.DATABASE["user"] == "root" and configs.DATABASE["password"] == "":
print("数据库认证通过")
return True
else:
print("数据库认证失败") def select(table,column): if db_auth(settings):
if table == "user":
user_info = {
"":["jack",28,"IT"],
"":["tom",24,"IT"],
"":["lyly",26,"IT"],
}
return user_info

13,测试,执行index主程序,会显示认证成功并返回查询到的数据库信息,如下:

welcome to home page
数据库认证通过
query res: {'': ['tom', 24, 'IT'], '': ['lyly', 26, 'IT'], '': ['jack', 28, 'IT']}
welcome to tv page

14,如果没有认证通过,会显示以下信息:

welcome to home page
数据库认证失败
query res: None
welcome to tv page

三:系统标准模块:

模块安装;

需要提前解决依赖关系:

yum install gcc

yum install python-devel

模块安装后会在sys.path定义的一目录当中,如:/Library/Frameworks/Python.framework/Versions/3.5/lib/python3.5/site-packages

通过操作系统 安装:yum,pip,apt-get

通过源码安装:下载源码,解压源码,进入目录,编译源码 python setup.py build,安装源码 python setup.py install

安装一个模块:

# pycrypto,由于 paramiko 模块内部依赖pycrypto,所以先下载安装pycrypto

# 下载安装 pycrypto
wget http://files.cnblogs.com/files/wupeiqi/pycrypto-2.6.1.tar.gz
tar -xvf pycrypto-2.6.1.tar.gz
cd pycrypto-2.6.1
python setup.py build
python setup.py install # 进入python环境,导入Crypto检查是否安装成功

系统模块介绍:

1、time模块:

import  time
def procedure(n):
time.sleep(n) procedure(2)
print(time.clock(),"返回处理器时间") procedure(3)
print(time.process_time(),"返回处理器时间")
1.2828922892186587e-06 返回处理器时间
0.046800299999999996 返回处理器时间

执行结果:

import  time
print(time.time(),"#返回当前系统时间戳")
print(time.ctime(),"#返回类似Mon Feb 22 17:27:01 2016的当前系统时间")
1456134311.3426776 #返回当前系统时间戳
Mon Feb 22 17:45:11 2016 #返回类似Mon Feb 22 17:27:01 2016的当前系统时间

执行结果;

import  time
print(time.ctime(time.time()-86640),"将时间戳时间转换为字符串格式的时间")
print(time.gmtime(time.time()-86400),"#将时间戳转换成struct_time格式")
print(time.localtime(time.time()-86640),"#将时间戳转换成struct_time格式,但返回的是本地时间")
Sun Feb 21 17:30:24 2016 将时间戳时间转换为字符串格式的时间
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=21, tm_hour=9, tm_min=34, tm_sec=24, tm_wday=6, tm_yday=52, tm_isdst=0) #将时间戳转换成struct_time格式
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=21, tm_hour=17, tm_min=30, tm_sec=24, tm_wday=6, tm_yday=52, tm_isdst=0) #将时间戳转换成struct_time格式,但返回的是本地时间

执行结果:

import  time
print(time.mktime(time.localtime()),"#与time.localtime()功能相反,将struct_time格式转回成时间戳格式")
#time.sleep(2) #休眠2秒
print(time.gmtime(),"time.gmtime()")
print(time.strftime("%Y"))
print(time.strftime("%Y-%m-%d %H:%M:%S",time.gmtime()),"#将struct_time格式转成指定的字符串格式")
print(time.strptime("2016-02-22","%Y-%m-%d"),"#将字符串格式转换成struct_time格式")
1456134175.0 #与time.localtime()功能相反,将struct_time格式转回成时间戳格式
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=22, tm_hour=9, tm_min=42, tm_sec=55, tm_wday=0, tm_yday=53, tm_isdst=0) time.gmtime()
2016
2016-02-22 09:42:55 #将struct_time格式转成指定的字符串格式
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=22, tm_hour=0, tm_min=0, tm_sec=0, tm_wday=0, tm_yday=53, tm_isdst=-1) #将字符串格式转换成struct_time格式

执行结果:

2.datetime 模块:

import  time
import datetime
print(datetime.date.today(),"#输出格式 2016-02-22")
print(datetime.date.fromtimestamp(time.time()),"#2016-02-22 将时间戳转成日期格式") #2016-01-16 将时间戳转成日期格式
2016-02-22 #输出格式 2016-02-22
2016-02-22 #2016-02-22 将时间戳转成日期格式

执行结果:

import  datetime
print(datetime.datetime.now(),"#输出当前的系统时间")
print(datetime.datetime.now().timetuple(),"##返回struct_time格式")
2016-02-22 19:22:18.422648 #输出当前的系统时间
time.struct_time(tm_year=2016, tm_mon=2, tm_mday=22, tm_hour=19, tm_min=22, tm_sec=18, tm_wday=0, tm_yday=53, tm_isdst=-1) ##返回struct_time格式

执行结果:

import  datetime
current_time = datetime.datetime.now()
print(current_time.replace(),"#当前时间")
print(current_time.replace(2020,12,20,13,14,15),"#时间替换,可以传递年月日和时间进行与当前的时间替换,传递的时间将当前的时间替换")
2016-02-22 19:31:20.832961 #当前时间
2020-12-20 13:14:15.832961 #时间替换,可以传递年月日和时间进行与当前的时间替换,传递的时间将当前的时间替换

执行结果:

import  datetime
str_to_date = datetime.datetime.strptime("83/10/21 12:10:59", "%y/%m/%d %H:%M:%S") #将字符串转换成日期格式
print(str_to_date,"#将字符串转换成日期格式")
new_date = datetime.datetime.now() + datetime.timedelta(days=15) #比现在加10天
print(new_date,"#加15天")
new_date = datetime.datetime.now() + datetime.timedelta(days=-10) #比现在减10天
print(new_date,"#减10天")
new_date = datetime.datetime.now() + datetime.timedelta(hours=-10) #比现在减10小时
print(new_date,"#加10小时")
new_date = datetime.datetime.now() + datetime.timedelta(seconds=120) #比现在+120s
print(new_date,"#加120秒")
1983-10-21 12:10:59 #将字符串转换成日期格式
2016-03-08 19:37:40.022908 #加15天
2016-02-12 19:37:40.022937 #减10天
2016-02-22 09:37:40.022950 #加10小时
2016-02-22 19:39:40.022963 #加120秒

执行结果:

3、random模块,生成随机的验证码:

import random
print(random.random(),"#随机生成小数点以后17位")
print(random.randint(1,2),"#从1和2中随机生成")
print(random.randrange(1,10),"#从1和10中随机生成")
0.5986389820464493 #随机生成小数点以后16位
1 #从1和2中随机生成
3 #从1和10中随机生成

执行结果:

随机生成6位数的验证码:

import random
checkcode = ''
for i in range(6):
current = random.randrange(0,9)
if current != i:
temp = chr(random.randint(65,90))
else:
temp = random.randint(0,9)
checkcode += str(temp)
print(checkcode) 执行结果:
GRHC09

4、OS模块:提供对操作系统进行调用的接口

import  os
print(os.getcwd(),"获取当前python脚本的工作路径")
os.chdir("test") #切换到目录,相当于shell的cd
print(os.getcwd(),与上次的目录不一样了吧")
print(os.curdir,"返回当前目录")
print(os.pardir,"获取当前目录的父目录字符串名:('..')")
/Users/zhangshijie/PycharmProjects/S12-Python3/day6 获取当前python脚本的工作路径
/Users/zhangshijie/PycharmProjects/S12-Python3/day6/test 改变当前脚本工作目录;相当于shell下cd,与上次的目录不一样了吧
. 返回当前目录
.. 获取当前目录的父目录字符串名:('..')

执行结果:

import  os
os.mkdir("pymkdir") #创建目录
os.makedirs("1/2/3/4/5") #创建多级目录
os.rmdir("pymkdir") #删除单个目录
os.removedirs("1/2/3/4/5") #删除父目录是空目录的目录,直到上级不是空目录
os.mkfifo("test.txt") #Create a "fifo" (a POSIX named pipe)
os.remove("test.txt") #删除一个文件
os.rename("test.txt","test1.txt") #重命名
print(os.stat("test1.txt")) #获取文件信息
os.stat_result(st_mode=4516, st_ino=3847301, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1456143823, st_mtime=1456143823, st_ctime=1456143823)

执行结果:

import  os
print(os.listdir(""),"列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印")
print(os.sep,"#输出操作系统特定的路径分隔符,win下为\\,Linux下为/")
print(os.linesep,"#输出当前平台使用的行终止符,win下为\t\n,Linux下为\n")
print(os.pathsep,"#输出用于分割文件路径的字符串")
[''] 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
/ #输出操作系统特定的路径分隔符,win下为\,Linux下为/
#输出当前平台使用的行终止符,win下为 ,Linux下为
: #输出用于分割文件路径的字符串

执行结果:

import  os
print(os.name,"输出字符串指示当前使用平台。win->'nt'; Linux->'posix'")
a = os.name
if a == "posix":
print("当前系统为linux")
else:
print("当前系统为windows") os.system("pwd") #直接运行shell命令
print(os.environ,"获取系统环境变量")
print(os.path.abspath("test.py"),"返回test.py规范化的绝对路径")
posix 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
当前系统为linux
/Users/zhangshijie/PycharmProjects/S12-Python3/day6
environ({'PYTHONPATH': '/Users/zhangshijie/PycharmProjects/S12-Python3', 'XPC_FLAGS': '0x0', 'VERSIONER_PYTHON_VERSION': '2.7', 'PATH': '/Library/Frameworks/Python.framework/Versions/3.5/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin', 'SSH_AUTH_SOCK': '/private/tmp/com.apple.launchd.jZ4mmjq5Wb/Listeners', 'PYTHONIOENCODING': 'UTF-8', 'HOME': '/Users/zhangshijie', 'TMPDIR': '/var/folders/n0/75hy61rn77s19fk821mn3x040000gn/T/', '__PYVENV_LAUNCHER__': '/Library/Frameworks/Python.framework/Versions/3.5/bin/python3.5', 'Apple_PubSub_Socket_Render': '/private/tmp/com.apple.launchd.jD2hlnKFAy/Render', 'VERSIONER_PYTHON_PREFER_32_BIT': 'no', 'LC_CTYPE': 'zh_CN.UTF-8', 'PYCHARM_HOSTED': '', 'LOGNAME': 'zhangshijie', 'XPC_SERVICE_NAME': 'com.jetbrains.pycharm.180832', 'PYTHONUNBUFFERED': '', '__CF_USER_TEXT_ENCODING': '0x1F5:0x19:0x34', 'SHELL': '/bin/bash', 'USER': 'zhangshijie'}) 获取系统环境变量
/Users/zhangshijie/PycharmProjects/S12-Python3/day6/test.py 返回test.py规范化的绝对路径

执行结果:

import  os
print(os.path.split("/var/log/httpd/access.log"),"将路径和文件分割,以元组显示结果")
print(os.path.dirname("/var/log/httpd/access.log"),"返回path的目录。其实就是os.path.split(path)的第一个元素")
print(os.path.basename("/var/log/httpd/access.log"),"返回最后的文件名")
print(os.path.exists("/var/log/httpd/access.log"),"如果文件存在返回True,不存在返回False")
('/var/log/httpd', 'access.log') 将路径和文件分割,以元组显示结果
/var/log/httpd 返回path的目录。其实就是os.path.split(path)的第一个元素
access.log 返回最后的文件名
False 如果文件存在返回True,不存在返回False

执行结果:

import  os
print(os.path.isabs("/tmp/ct.shutdown"),"判断是否绝对路径")
print(os.path.isfile("/tmp/ct.shutdown"),"判断是否一个已经存在的文件")
print(os.path.isdir("/tmp/ct.shutdown"),"判断是否一个已经存在的目录")
print(os.path.join("/tmp/0123","",""),"将多个目录合并成绝对路径")
True 判断是否绝对路径
True 判断是否一个已经存在的文件
False 判断是否一个已经存在的目录
/tmp/0123/123/234 将多个目录合并成绝对路径

执行结果:

import  os
print(os.path.getatime("/etc/passwd"),"以时间戳返回path所指向的文件或者目录的最后存取时间")
print(os.path.getmtime("/etc/passwd"),"以时间戳返回path所指向的文件或者目录的最后修改时间")
print(os.popen("ls -l /").read()) #读取文件或执行命令并将结果返回
执行结果: 1456217043.0 以时间戳返回path所指向的文件或者目录的最后存取时间 1440397265.0 以时间戳返回path所指向的文件或者目录的最后修改时间
drwxrwxr-x+ 70 root admin 2380 Feb 20 19:43 Applications
drwxr-xr-x+ 61 root wheel 2074 Jan 7 18:09 Library

执行结果:

5.sys模块:用于提供对解释器相关的操作,sys模块提供了许多函数和变量来处理 Python 运行时环境的不同部分

sys.argv           命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 多个目录之间只见调用模块的时候,尤其是深层次的模块调用浅层次的模块的时候要使用os.path.dirname(os.path.dirname(os.path.abspath(__file__)))这样的方法取得和浅层次文件同样的目录里面才可调用
sys.platform 返回操作系统平台名称
sys.stdout.write('please:') #返回并统计输出的字符个数
sys.stdin.readline()[2] #读取输入,并返回指定下标的元素
>>> a = sys.stdin.readline()
abcd
>>> a
'abcd\n'
>>> a = sys.stdin.readline()[:-1] #删除回车,即删除换行符\n
abcd
>>> a
'abcd'

6.hashlib模块:

在python3中用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, SHA256, SHA384, SHA512 ,MD5 算法:

python2.7使用md5模块:

import md5
hash = md5.new()
hash.update('admin')
print hash.hexdigest()
执行结果:
21232f297a57a5a743894a0e4a801fc3

python3.5中使用hashlib模块

import  hashlib
m = hashlib.md5()
m.update(b"Hello")
m.update(b"It's me")
print(m.hexdigest()) m.update(b"xxx")
print(m.hexdigest()) hash = hashlib.sha512()
hash.update(b"xxx")
print(hash.hexdigest())
 
执行结果:

5ddeb47b2f925ad0bf249c52e342728a
5ecd493c71024e56b341b9f80eb119e3
9057ff1aa9509b2a0af624d687461d2bbeb07e2f37d953b1ce4a9dc921a7f19c45dc35d7c5363b373792add57d0d7dc41596e1c585d6ef7844cdf8ae87af443f

#python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密
import hmac
h = hmac.new(b'passwprd')
h.update(b'password')
print(h.hexdigest()) 执行结果:
b6628c80a2b6954ddf9899e61bf30472

7.json和pickle模块:

pickle模块:只适用于python的特定数据类型,即pickle 是python独有的,支持python里面的字典,字符串,函数等格式,pickle保存的格式其他语言是无法读取的,

json dumps把数据类型转换成字符串,dump把数据类型转换成字符串并存储在文件中 ,loads把字符串转换成数据类型,load把文件打开从字符串转换成数据类型

pickle同理

现在有个场景在不同设备之间进行数据交换很low的方式就是传文件,dumps可以直接把服务器A中内存的东西发给其他服务器,比如B服务器、
在很多场景下如果用pickle的话那A的和B的程序都的是python程序这个是不现实的,很多时候都是不同的程序之间的内存交换怎么办?就用到了json(和html类似的语言)
并且josn能dump的结果更可读,那么有人就问了,那还用pickle做什么不直接用josn,是这样的josn只能把常用的数据类型序列化(列表、字典、列表、字符串、数字、),比如日期格式、类对象!josn就不行了。
为什么他不能序列化上面的东西呢?因为josn是跨语言的!

pickle使用方法如下:

#将数据dump到文件
import pickle
data = [123123453454456,{"K1":""},{"K2":"K3"}]
with open("data.txt","wb") as file1:
pickle.dump(data,file1) #dunp是直接将文件dump到文件当中,和dumps方法不一样
file1.write(pickle.dumps(data)) #需要用二进制文件的写入方式打开文件,然后将序列化以后的数据写入到文件,和dump写入文件的方法不同 #从文件读取数据:
import pickle
f = open("data.txt","rb")
a = pickle.loads(f.readline()) print(a)
f.close() 执行结果:
[123123453454456, {'K1': ''}, {'K2': 'K3'}]

json:json是各种语言都支持的,json只支持字典格式,json是pyton与java等语言相互支持的。

import   json
data = "123123453454456abcd"
with open("data.json","w") as f:
json.dump(data,f) #使用dump方法将data写入到打开的文件
#f.write(json.dumps(data)) #使用文件write的方法将json序列号后的数据写入文件
f.close() 读取json文件:
import json
readjson = json.load(open("data.json"))
print(readjson) 执行结果:
123123453454456abcd
 

Python 第五篇(上):算法、自定义模块、系统标准模块(time 、datetime 、random 、OS 、sys 、hashlib 、json和pickle)的更多相关文章

  1. CSIC_716_20191116【常用模块的用法 time ,datetime, random, os, sys, hashlib】

    import time import datetime import os import sys import random import hashlib time模块 时间戳(Timestamp) ...

  2. Python常用模块(time, datetime, random, os, sys, hashlib)

    time模块 在Python中,通常有这几种方式来表示时间: 时间戳(timestamp) :         通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运 ...

  3. time,datetime,random,os,sys,hashlib,logging,configparser,re模块

    #-----time模块----- print(help(time)) #打印time帮助文档 print(time.time()) #打印时间戳 1569824501.6265268 time.sl ...

  4. python笔记-1(import导入、time/datetime/random/os/sys模块)

    python笔记-6(import导入.time/datetime/random/os/sys模块)   一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其 ...

  5. python笔记-6(import导入、time/datetime/random/os/sys模块)

    一.了解模块导入的基本知识 此部分此处不展开细说import导入,仅写几个点目前的认知即可.其它内容待日后有深入理解了再来细说 1.import可以导入的两种不同的内容 1.1 *.py文件结尾的文件 ...

  6. python之常见模块(time,datetime,random,os,sys,json,pickle)

    目录 time 为什么要有time模块,time模块有什么用?(自己总结) 1. 记录某一项操作的时间 2. 让某一块代码逻辑延迟执行 时间的形式 时间戳形式 格式化时间 结构化时间 时间转化 总结: ...

  7. 常用模块之 time,datetime,random,os,sys

    time与datetime模块 先认识几个python中关于时间的名词: 时间戳(timestamp):通常来说,时间戳表示的是从1970年1月1日00:00:00开始按秒计算的偏移量.我们运行“ty ...

  8. python基础语法11 内置模块time,datatime,random,os,sys,hashlib模块

    time模块 在python的三种时间表现形式: 1.时间戳: 给电脑看的. - 自1970-01-01 00:00:00到当前时间,按秒计算,计算了多少秒. 2.格式化时间(Format Strin ...

  9. oldboy edu python full stack s22 day16 模块 random time datetime os sys hashlib collections

    今日内容笔记和代码: https://github.com/libo-sober/LearnPython/tree/master/day13 昨日内容回顾 自定义模块 模块的两种执行方式 __name ...

随机推荐

  1. HDU 4725 The Shortest Path in Nya Graph-【SPFA最短路】

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=4725 题意:有N个点和N层..一层有X个点(0<=X<=N).两邻两层间有一条路花费C.还有M ...

  2. 【已解决】谁动了我的CurrentPrincipal?求助我在给Artech的wcf petshop增加授权机制的时候遇到的问题。

    这个问题已解决,是绑定设置的问题,主要还是因为我自己没有深入理解WCF绑定的安全机制.在这篇博客里面我来说说怎么解决的. 下载了Artech的wcf petshop源码(博文链接)并调试运行成功后,打 ...

  3. Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器

    Asp.Net MVC4.0 官方教程 入门指南之二--添加一个控制器 MVC概念 MVC的含义是 “模型-视图-控制器”.MVC是一个架构良好并且易于测试和易于维护的开发模式.基于MVC模式的应用程 ...

  4. C# Best Practices - Define Fields Appropriately

    Backing Fields private string description; private int productId; Features A variable in a class Hol ...

  5. Java排序之排序大综合

    一.最近写了一些排序,于是和和大家分享一下:(默认都是从小到大排序) 二.冒泡排序 1.什么是冒泡排序:原理是临近的两个数比较大小,将较大的数往后移,这样遍历一趟数组以后,最大的数就排在的最后面(时间 ...

  6. js基础之冒号

    js中冒号的作用有两种, 转自:http://www.kqiqi.com/knowledge/web-based/506.html 一.?: 操作符 a = expression ? b : c;如果 ...

  7. Linux下Qt应用程序的发布(使用LDD命令查看所有依赖的库文件)

    最近一直在学习Qt,用Qt写了一个程序,但是不知道怎么发布,网上说的都是在windows下怎么发布Qt应用程序,但是,在windows下Qt应用程序依赖的库文件与linux下的名字不同.于是,我就想到 ...

  8. 教你怎么用Mono Cecil - 动态注入 (注意代码的注释)

    原文 教你怎么用Mono Cecil - 动态注入 (注意代码的注释) 使用 Mono Cecil 进行反编译:using Mono.Cecil; using Mono.Cecil.Cil; //.. ...

  9. Python web框架有哪些

    简单易学的web.py, 大型的django:文档最完善.市场占有率最高.招聘职位最多. Tornado 具体看:http://feilong.me/2011/01/talk-about-python ...

  10. 2014 北京邀请赛ABDHJ题解

    A. A Matrix 点击打开链接 构造,结论是从第一行開始往下产生一条曲线,使得这条区间最长且从上到下递减, #include <cstdio> #include <cstrin ...