内容正文:
任务5.3 模块
按指定长度生成字母、数字随机序列码
同学们好,这一节我们讲解如何python里面的模块
1
5.3 模块——按指定长度生成字母、数字随机序列码
【任务描述】
根据用户指定的长度,生成随机的字母和数字序列,并把两者进行混合生成序列码。其中,数字个数是随机数,字母个数为指定长度减去数字个数。
5.3 模块——按指定长度生成字母、数字随机序列码
【任务分析】
任务实现的关键是随机数字的生成、随机字母的生成,以及两者组合后的顺序打乱,这里需要用到相应的模块。下面来学习通过调用相应模块中的函数来实现随机数的生成、打乱等功能。
5.3 模块——按指定长度生成字母、数字随机序列码
5.3.1 模块及其使用
5.3.2 模块的制作
5.3.3 常用模块
5.3.1 模块及其使用
同学们好,这一节我们讲解如何python里面的模块
5
5.3.1 模块及其使用
Python模块(Module)是一个Python文件,以.py结尾,包含Python对象定义和Python语句,它让我们能够有逻辑地组织Python代码段。
在Python中可以使用import关键字来引入某个模块。例如,要引入math模块,可以使用import math。
使用import关键字引入模块的基本语法格式如下:
import module1, mudule2...
在完成任务前我们 先来学习一下需要用到的知识,模块。Python模块(Module)是一个Python文件,以.py结尾,包含Python对象定义和Python语句,它让我们能够有逻辑地组织Python代码段。把相关的代码分配到一个模块中能让代码更易用、易懂。模块既能定义函数、类和变量,又能包含可执行的代码。
6
5.3.1 模块及其使用
当解释器遇到import语句时,如果模块位于当前的搜索路径中,那么该模块就会被自动导入;如果要调用某个模块中的函数,则必须这样引用:
模块名.函数名
在调用模块中的函数时,之所以要加上模块名,是因为在多个模块中,可能存在名称相同的函数,此时如果只通过函数名来调用,那么解释器无法知道到底要调用哪个函数。所以,在使用上述语句引入模块时,调用函数必须加上模块名。
在完成任务前我们 先来学习一下需要用到的知识,模块。Python模块(Module)是一个Python文件,以.py结尾,包含Python对象定义和Python语句,它让我们能够有逻辑地组织Python代码段。把相关的代码分配到一个模块中能让代码更易用、易懂。模块既能定义函数、类和变量,又能包含可执行的代码。
7
5.3.1 模块及其使用
【例5-23】调用模块中的函数。
import math
# print (sqrt(2)) 这样会报错
# 下面的调用才能正确输出结果
print (math.sqrt(2))
1.4142135623730951
如果要调用某个模块中的函数,则必须这样引用:模块名.函数名。在调用模块中的函数时,之所以要加上模块名,是因为在多个模块中,可能存在名称相同的函数,此时如果只通过函数名来调用,那么解释器无法知道到底要调用哪个函数。所以,在使用上述语句引入模块时,调用函数必须加上模块名。我们看一个例子,上面如果直接使用sqrt这个函数就会报错,必须使用math.sqrt(2)才能正确运行。有时候我们只需要用到模块中的某个函数,此时可以只引入模块中的这个函数,语法格式如下:from模块名import 函数名1,函数名2...,例如要调用斐波那契函数,可以使用语句from fib import fibonacci,这里从fib模块引入函数fibonacci。
通过这种方式引入函数时,调用函数只能给出函数名,而不能给出模块名;但是当两个模块中含有相同名称的函数时,后一次引入会覆盖前一次引入,即假如模块A中有函数function,在模块B中也有函数function,如果引入A中的function在先,B中的function在后,那么当调用function函数时,是去执行模块B中的function函数。如果想把一个模块中的所有内容全部导入到当前的命名空间中也是可行的,只需使用如下声明:from 模块名 import *
需要注意的是,虽然Python 提供了简单的方法导入一个模块中的所有项目,但是,这种方法不该被过多地使用。
8
5.3.1 模块及其使用
有时候我们只需要用到模块中的某个函数,此时可以只引入模块中的这个函数,语法格式如下:
from模块名import 函数名1,函数名2...
例如,要导入模块fib中的fibonacci函数,可以使用如下语句:
from fib import fibonacci
在完成任务前我们 先来学习一下需要用到的知识,模块。Python模块(Module)是一个Python文件,以.py结尾,包含Python对象定义和Python语句,它让我们能够有逻辑地组织Python代码段。把相关的代码分配到一个模块中能让代码更易用、易懂。模块既能定义函数、类和变量,又能包含可执行的代码。
9
5.3.2 模块的制作
同学们好,这一节我们讲解如何python里面的模块
10
5.3.2 模块的制作
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字 。
假设现在有一个文件test.py,它定义了函数add(),文件test.py的代码如下:
def add(a,b):
return a+b
【例5-24】模块test的代码。
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。假设现在有一个文件test.py,它定义了函数add(),文件test.py的代码如下:def add(a,b):
return a+b,此时,如果想在main.py文件中使用test.py文件中的add()函数,则可以使用“from test import add”来引入。我们看下这个代码from test import add
result=add (11,22) print(result),这里通过from test import add 引入模块test的add函数,并执行它,运行结果为33.
11
5.3.2 模块的制作
此时,如果想在main.py文件中使用test.py文件中的add()函数,则可以使用“from test import add”来引入。
from test import add
result=add (11,22)
print(result)
33
【例5-25】引入模块。
在Python中,每个Python文件都可以作为一个模块,模块的名字就是文件的名字。假设现在有一个文件test.py,它定义了函数add(),文件test.py的代码如下:def add(a,b):
return a+b,此时,如果想在main.py文件中使用test.py文件中的add()函数,则可以使用“from test import add”来引入。我们看下这个代码from test import add
result=add (11,22) print(result),这里通过from test import add 引入模块test的add函数,并执行它,运行结果为33.
12
5.3.2 模块的制作
def add(a, b)
return a+b
# 用来进行测试
result =add (12,22)
print('int test.py file,12+22=%d' %result)
test.py的代码
import test
result= test.add(11,22)
print(result)
main.py的代码
int test.py file,12+22=34
33
在实际开发中,在开发人员编写完一个模块之后,为了让模块能够在项目中达到想要的效果,开发人员会在py文件中添加一些测试信息。例如,在test.py中添加测试代码,具体内容如下:
从运行结果中可以看出,test.py中的测试代码也被执行了。但是这并不合理,测试代码只应该在单独执行test.py时执行,而不应该在被其他文件引用时执行。
在实际开发中,在开发人员编写完一个模块之后,为了让模块能够在项目中达到想要的效果,开发人员会在py文件中添加一些测试信息。例如,在test.py中添加测试代码,具体代码里面,添加了一个print(‘int test.py file,12+22=%d’ %result),这个在运行的时候会执行print语句,打印“int test.py file,12+22=33”。此时,如果在其他py文件中引入此文件,那么测试的那段代码是也会被执行,在main.py中引入test.py文件,
运行结果为:int test.py file,12+22=34 33,从运行结果中可以看出,test.py中的测试代码也被执行了。但是这并不合理,测试代码只应该在单独执行test.py时执行,而不应该在被其他文件引用时执行。为了解决这个问题,Python提供了“__name__”属性。__name__是一个Python预定义全局变量,在模块内部是用来标识模块名称的。如果模块是被其他模块导入的,则__name__的值是模块的名称。每个模块都有一个__name__属性,当其值为“__main__”时,表明该模块自身在运行,否则是被引用。因此,如果我们想在模块被引入时,不执行模块中的某一程序块,则可以通过判断__name__属性的值来实现。对test.py进行修改,在原来test.py的代码里面加入一个判断,if __name__=“__main__”,如果相等的话,表示是自身的执行,则输出print语句里面的内容。我们对test.py修改后再次执行main.py,结果为33。也即不再执行test.py的测试语句。
13
5.3.2 模块的制作
def add(a,b):
return a+b
# 用来进行测试
if __name__="__main__"
result=add(12,22)
print('int test.py file,__name__ is %s' %__name__)
【例5-25】在模块中应用__name__属性。
33
为了解决这个问题,Python提供了“__name__”属性。__name__是一个Python预定义全局变量,在模块内部是用来标识模块名称的。如果模块是被其他模块导入的,则__name__的值是模块的名称。每个模块都有一个__name__属性,当其值为“__main__”时,表明该模块自身在运行,否则是被引用。因此,如果我们想在模块被引入时,不执行模块中的某一程序块,则可以通过判断__name__属性的值来实现。修改后的test.py代码:
在实际开发中,在开发人员编写完一个模块之后,为了让模块能够在项目中达到想要的效果,开发人员会在py文件中添加一些测试信息。例如,在test.py中添加测试代码,具体代码里面,添加了一个print(‘int test.py file,12+22=%d’ %result),这个在运行的时候会执行print语句,打印“int test.py file,12+22=33”。此时,如果在其他py文件中引入此文件,那么测试的那段代码是也会被执行,在main.py中引入test.py文件,
运行结果为:int test.py file,12+22=34 33,从运行结果中可以看出,test.py中的测试代码也被执行了。但是这并不合理,测试代码只应该在单独执行test.py时执行,而不应该在被其他文件引用时执行。为了解决这个问题,Python提供了“__name__”属性。__name__是一个Python预定义全局变量,在模块内部是用来标识模块名称的。如果模块是被其他模块导入的,则__name__的值是模块的名称。每个模块都有一个__name__属性,当其值为“__main__”时,表明该模块自身在运行,否则是被引用。因此,如果我们想在模块被引入时,不执行模块中的某一程序块,则可以通过判断__name__属性的值来实现。对test.py进行修改,在原来test.py的代码里面加入一个判断,if __name__=“__main__”,如果相等的话,表示是自身的执行,则输出print语句里面的内容。我们对test.py修改后再次执行main.py,结果为33。也即不再执行test.py的测试语句。
14
5.3.3 常用模块
同学们大家好,本节介绍常用模块的使用,主要有随机模块、时间模块、日历模块。
15
1.随机模块(random)
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。
5.3.3 常用模块
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(1)random.random():生成一个[0.0,1.0)之间的小数。
import random
print(random.random())
5.3.3 常用模块
0.6603635943224221
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(2)random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。代码如下:
import random
print("random1:",random.uniform(100,200))
print("random2:",random.uniform(200,100))
5.3.3 常用模块
random1: 189.16312111850635
random2: 117.90054800091299
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(3)random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。
import random
print("random:",random.randint(100,200))
5.3.3 常用模块
random: 125
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(4)random.randrange(start,stop,[step]):生成一个在[start,stop)之间以step为步数的随机整数。参数start为随机区间的开始值,且为整数。stop为随机区间的结束值,随机数不包含结束值,也为整数。step为随机区间的步长值,同为整数。
5.3.3 常用模块
import random
print("random:",random.randrange(100,200,2))
random: 160
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(5)random. choice(seq):从一个非空列表中随机选择一个元素,其中,seq参数可以是列表、元组或字符串。
5.3.3 常用模块
import random
print(random.choice("hello"))
list=[1,2,3,4,5,6]
a=random.choice(list)
print(a)
l
4
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(6)random. shuffle(seq):将序列类型seq中的元素随机排列,返回打乱后的序列,在内存中地址不变。
5.3.3 常用模块
import random
num = [1, 2, 3, 4, 5]
random.shuffle(num)
print("shuffle: ",num)
shuffle: [2, 5, 1, 3, 4]
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(6)random. shuffle(seq):将序列类型seq中的元素随机排列,返回打乱后的序列,在内存中地址不变。
5.3.3 常用模块
import random
num = [1, 2, 3, 4, 5]
random.shuffle(num)
print("shuffle: ",num)
shuffle: [2, 5, 1, 3, 4]
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(7)random. sample (seq,k):从seq类型中随机选取k个元素,以列表类型返回。
5.3.3 常用模块
import random
num = [1, 2, 3, 4, 5]
print("sample: ",random.sample(num, 3))
sample: [1, 4, 5]
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(8)random.seed():通过借助随机数种子seed()函数,我们可以每次都生成相同的随机数。
5.3.3 常用模块
import random
print(random.random())
print(random.random())
random.seed(10)
print(random.random())
random.seed(10)
print(random.random())
0.6493129556509691
0.16883921993754958
0.5714025946899135
0.5714025946899135
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
5.3.3 常用模块
边学边练:
设计一个程序,对1~100的整数进行随机抽取5个。
2.时间模块(time)
(1)时间戳:是指某个时间与1970年1月1日00:00:00的差值,单位为秒,是一个浮点型数值。
5.3.3 常用模块
import time
print(time.time())
1614690518.827801
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
(2)格式化时间:是由字母和数字表示的时间,如“Mon Oct 29 15:12:27 2019”。格式化时间字符串可以通过类似于time.strftime("%Y-%m-%d %H:%M:%S")的表达式获得。
5.3.3 常用模块
import time
time.strftime("%Y-%m-%d %H:%M:%S")
2021-03-02 21:12:45
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
5.3.3 常用模块
%a 本地星期名称的简写(如星期四为Thu)
%A 本地星期名称的全称(如星期四为Thursday)
%b 本地月份名称的简写(如八月份为Agu)
%B 本地月份名称的全称(如八月份为August)
%c 本地相应的日期和时间表示
%d 一个月中的第几天(01~31)
%f 微秒(范围0.999999)
%H 一天中的第几个小时(24小时制,00~23)
%I 第几个小时(12小时制,0~11)
%j 一年中的第几天(001~366)
%m 月份(01~12)
%M 分钟数(00~59)
Python中的时间日期格式化符号
这张表是Python中的时间日期格式化符号,可以根据实际需要选择不同的符号。好了同学们关于常用模块我们就讲到这里
5.3.3 常用模块
%p 本地am或者pm的标识符
%S 秒数(00~59)
%U 一年中的星期数(00~53星期天是一个星期的开始)
%w 一个星期中的第几天(0~6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始
%x 本地相应的日期表示
%X 本地相应的时间表示
%y 两位数的年份表示(00~99)
%Y 四位数的年份表示(000~9999)
%z 与UTC时间的间隔(如果是本地时间,则返回空字符串)
%Z 时区的名字(如果是本地时间,则返回空字符串)
%% %本身
Python中的时间日期格式化符号
这张表是Python中的时间日期格式化符号,可以根据实际需要选择不同的符号。好了同学们关于常用模块我们就讲到这里
(3)元组(struct_time):将时间的信息放到一个元组中,可以通过time.localtime()获得,返回一个时间元组。
5.3.3 常用模块
import time
print(time.localtime())
time.struct_time(tm_year=2021, tm_mon=3, tm_mday=2, tm_hour=21, tm_min=37, tm_sec=4, tm_wday=1, tm_yday=61, tm_isdst=0)
random模块包含生成伪随机数的函数,有助于编写模拟程序或生成随机输出的程序。这些函数生成的数字好像是完全随机的,但它们背后的系统是可预测的。如果要求真正的随机(如用于加密或实现与安全相关的功能),则应考虑使用os模块中的函数urandom。random模块中的systemRandom类功能与urandom类似,可提供接近于真正的随机数据。random.random():生成一个[0.0,1.0)之间的小数。代码如下,运行结果为0到1之间的小数。random.uniform(a,b):生成一个[a,b]之间的随机小数。如果a的值小于b的值,则生成的随机浮点数N的取值范围为a<=N<=b;如果a的值大于b的值,则生成的随机浮点数N的取值范围为b<=N<=a。大家看它的运行结果。random.randint(a,b):从a和b(包括b)之间随机生成一个整数,需要注意的是,a和b的取值必须为整数,并且a的值一定要小于b的值。 random.randint(100,200),运行结果为125。
5.3.3 常用模块
边学边练:
利用时间模块,获取当前的时间戳,并对它进行格式化输出。
5.3.4 任务实现——按指定长度生成字母数字随机序列码
同学们大家好,本节我们用python中的模块调用,实现按指定长度生成字母数字随机序列码这个任务
33
5.3.4 任务实现——按指定长度生成字母数字随机序列码
【任务描述】
根据用户指定的长度,生成随机的字母和数字序列,并把两者进行混合生成序列码。其中,数字个数是随机数,字母个数为指定长度减去数字个数。
5.3.4 任务实现——按指定长度生成字母数字随机序列码
【任务分析】
任务实现的关键是随机数字的生成、随机字母的生成,以及两者组合后的顺序打乱。这里需要用到random模块,通过该模块中的函数来实现相应功能。我们按以下步骤来设计程序:
(1)生成随机长度的随机数字。
(2)生成剩余长度的随机字母。
(3)把随机的数字和字母进行组合。
(4)把组合后的序列进行打乱处理并输出。
5.3.4 任务实现——按指定长度生成字母数字随机序列码
import random,string
def gen_random_string(length):
num_of_numeric=random.randint(1,length-1) #数字的个数随机产生
num_of_letter=length-num_of_numeric #剩下的都是字母
numerics=[random.choice(string.digits)for i in range(num_of_numeric)] #随机生成数字
letters=[random.choice(string.ascii_letters)for i in range(num_of_letter)] #随机生成字母
all_chars=numerics+letters #结合两者
random.shuffle(all_chars) #洗牌
result=''.join([i for i in all_chars]) #生成最终字符串
return result
if __name__=='__main__':
print(gen_random_string(10))
【例5-26】任务实现:按指定长度生成字母、数字随机序列码。
NbM9Ex0G8G
首先通过import模块引入random,string两个模块,然后定义一个函数gen_random_string(length),该函数根据用户指定的长度,生成一个随机的字母和数字组合的字符串。我们来看下它是如何来实现的。首先它定义了一个变量num_of_numeric,它是值通过模块函数randint(),在1和指定长度length-1区间内随机获得。接下来定义一个变量num_of_letter,该变量的值为用户指定长度减去刚刚随机生成的数字个数。接下来通过循环生成一个数量为num_of_numeric的数字列表,同样通过循环生成一个随机字母,然后把两者通过+号把数字和字母拼成一个列表,接下来通过random.shuffle()函数把顺序打乱,最后把序列里面的值用空格来进行连接生成新的串.下面我们来看代码在编辑环境里的执行.
$$