模块介绍
导入模块,通过import实现:
仅导入模块内特定的函数,通过from…import…实现
在一个模块文件中也可以导入其他模块,通过调用已有模块的函数来完成新的模块功能构造,这样便于代码的多次利用。
时间和日期功能模块
calendar模块
运用 calendar模块中的 month函数可以获得某一特定年月的日历。
此模块的函数都是日历相关的,例如打印某月的字符月历。
星期一是默认的每周第一天,星期天是默认的最后一天。
更改设置需调用calendar.setfirstweekday()函数。模块包含了以下内置函数:
序号 | 函数及描述 |
1 | calendar.calendar(year,w=2,l=1,c=6) 返回一个多行字符串格式的year年年历,3个月一行,间隔距离为c。 每日宽度间隔为w字符。每行长度为21* W+18+2* C。l是每星期行数。 |
2 | calendar.firstweekday( ) 返回当前每周起始日期的设置。默认情况下,首次载入caendar模块时返回0,即星期一。 |
3 | calendar.isleap(year) 是闰年返回True,否则为false。 |
4 | calendar.leapdays(y1,y2) 返回在Y1,Y2两年之间的闰年总数。 |
5 | calendar.month(year,month,w=2,l=1) 返回一个多行字符串格式的year年month月日历,两行标题,一周一行。每日宽度间隔为w字符。每行的长度为7* w+6。l是每星期的行数。 |
6 | calendar.monthcalendar(year,month) 返回一个整数的单层嵌套列表。每个子列表装载代表一个星期的整数。Year年month月外的日期都设为0;范围内的日子都由该月第几日表示,从1开始。 |
7 | calendar.monthrange(year,month) 返回两个整数。第一个是该月的星期几的日期码,第二个是该月的日期码。日从0(星期一)到6(星期日);月从1到12。 |
8 | calendar.prcal(year,w=2,l=1,c=6) 相当于 print calendar.calendar(year,w,l,c). |
9 | calendar.prmonth(year,month,w=2,l=1) 相当于 print calendar.calendar(year,w,l,c)。 |
10 | calendar.setfirstweekday(weekday) 设置每周的起始日期码。0(星期一)到6(星期日)。 |
11 | calendar.timegm(tupletime) 和time.gmtime相反:接受一个时间元组形式,返回该时刻的时间辍(1970纪元后经过的浮点秒数)。 |
12 | calendar.weekday(year,month,day) 返回给定日期的日期码。0(星期一)到6(星期日)。月份为 1(一月) 到 12(12月)。 |
代码示例:
# 导入日历模块
import calendar
# 输入指定年份
yy = int(input('请输入年份:'))
# 输入指定月份
mm = int(input('请输入月份:'))
# 打印日历
print(calendar.month(yy, mm))
输出结果:
time模块
通过time模块中相关函数的操作可以获取当前操作系统的时间。
time():返回值为时间戳,以1970年1月1日0时0分0秒为计时起点。此时操作系统的时间距离计时起点的秒数(不考虑闰秒1)的浮点数形式。
获取年月日形式的时间:localtime()、asctime()、ctime()。
localtime():函数类似gmtime(),作用是格式化时间戳为本地的时间。
输出:time.struct_time(tm_year=2021, tm_mon=11, tm_mday=16, tm_hour=22, tm_min=0, tm_sec=36, tm_wday=1, tm_yday=320, tm_isdst=0)
asctime():参数形式为时间元祖,默认形式为localtime()的返回值,返回值为字符串。
输出:Tue Nov 16 22:00:36 2021
ctime():参数形式为时间戳,默认参数为time.time()返回的时间戳,返回值为字符串。
输出:Tue Nov 16 22:00:36 2021
datatime模块
datetime模块中的 datetime类也可以用来存储时间类型,以及进行一些转换和运算操作。
datetime对象之间可以进行减法运算,运算后会返回一个 timedelta对象,表示一个时间段。
datetime对象与它所保存的字符串格式时间戳之间可以互相转换,str()方法会将datetime对象转换成字符串的形式
datetime模块中包含如下类:
类名 | 功能说明 |
其中datetime对象为最常使用的,获取系统日期
now=datetime.datetime.now()
#获取小时
hour=now.hour
日期转换:
import datetime
# str转时间格式:
dd = '2019-03-17 11:00:00'
dd = datetime.datetime.strptime(dd, "%Y-%m-%d %H:%M:%S")
print(dd,type(dd))
# 时间格式转str:
dc = dd.strftime("%Y-%m-%d %H:%M:%S")
print(dc,type(dc))
输出: 2019-03-17 11:00:00 <class 'datetime.datetime'>
2019-03-17 11:00:00 <class 'str'>
List类型与操作
列表是可变对象,列表中元素及其元素的个数允许被更改,即可以增加、插入或者删除列表中的元素。
增加列表元素
你可以对列表的数据项进行修改或更新,你也可以使用append()方法来添加列表项,如下所示:
#!/usr/bin/python
# -*- coding: UTF-8 -*-
list = [] ## 空列表
list.append('Google') ## 使用 append() 添加元素,每次在末尾添加
list.append('Runoob')
print (list)
输出:
['Google', 'Runoob']
增加还有insert和extend函数,其中:
Insert: 按位置插入
li=['a', 'b']
li.insert(0,"c") #在指定位置插入
#输出为:['c', 'a', 'b']
extend: 将两个列表链接
li=['a','b']
li.extend([2,'e'])
#输出为:['a', 'b', 2, 'e']
删除列表元素
可以使用 del 语句来删除列表的元素,如下实例:
#!/usr/bin/python
list1 = ['physics', 'chemistry', 1997, 2000]
print list1
del list1[2]
print "After deleting value at index 2 : "
print (list1)
输出结果:
['physics', 'chemistry', 1997, 2000]
After deleting value at index 2 :
['physics', 'chemistry', 2000]
查询列表元素
获取列表中的单个元素
正向索引0到N-1 举例list[0]
逆向索引从N到 -1 举例list[-N]
指定索引不存在,抛出indexError
示例:
list1 = ['physics', 'chemistry', 1997, 2000]
print(list1[0])
print(list1[-1])
输出:
physics
2000
tuple类型与操作
元祖是序列类型的数据,序列类型的操作同样适用于元祖。
元祖不可变对象,不能增加、删除其中的元素,可以进行连接创建一个新的对象。
代码示例:
#!/usr/bin/python
tup1 = (12, 34.56);
tup2 = ('abc', 'xyz');
# 注意:以下修改元组元素操作是非法的。
# tup1[0] = 100;
# 创建一个新的元组
tup3 = tup1 + tup2;
print (tup3);
#以上实例输出结果:
#(12, 34.56, 'abc', 'xyz')
range类型与操作
Python3 range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。
Python3 list() 函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。
Python2 range() 函数返回的是列表。
函数语法
range(stop)
range(start, stop[, step])
参数说明:
start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例
>>>range(5)
range(0, 5)
>>> for i in range(5):
... print(i)
...
0
1
2
3
4
>>> list(range(5))
[0, 1, 2, 3, 4]
>>> list(range(0))
[]
有两个参数或三个参数的情况(第二种构造方法)::
>>>list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]
>>> list(range(0, 10, 2))
[0, 2, 4, 6, 8]
>>> list(range(0, -10, -1))
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> list(range(1, 0))
[]
Str字符串操作
字符串分割与连接
1 连接
python 中的 join() 方法,可以把一个字符串列表连接起来,成为一个独立的字符串。
print(','.join(['红','绿','黄']))
print('-'.join(['红','绿','黄']))
运行结果:
红,绿,黄
红-绿-黄
注意: 调用 join() 方法的字符串, 会被插入到 join() 列表参数中每个字符串之间,作为分隔符 。
2 分割
split() 方法会把一个字符串,分割为一个字符串列表。
print('红 绿 黄'.split())
print('红,绿,黄'.split(','))
运行结果:
['红', '绿', '黄']
['红', '绿', '黄']
默认情况下,split() 方法会按照各种空白字符进行分割, 自动识别比如空格、 制表符或换行符。我们也可以向 split()方法传入一个分割字符串, 让它按照我们所指定的字符串进行分割。
英文字母大小写转换操作
以下代码演示了如何将字符串转换为大写字母,或者将字符串转为小写字母等:
str = "http://www.runoob.com"
print(str.upper()) # 把所有字符中的小写字母转换成大写字母
print(str.lower()) # 把所有字符中的大写字母转换成小写字母
print(str.capitalize()) # 把第一个字母转化为大写字母,其余小写
print(str.title()) # 把每个单词的第一个字母转化为大写,其余小写
执行以上代码输出结果为:
字符串的查找、删除与替换:
去空格及特殊符号
s.strip()
s.lstrip()
s.rstrip()
s.strip().lstrip().rstrip(',')
声明:s为字符串,rm为要删除的字符序列
s.strip(rm) 删除s字符串中开头、结尾处,位于 rm删除序列的字符
s.lstrip(rm) 删除s字符串中开头处,位于 rm删除序列的字符
s.rstrip(rm) 删除s字符串中结尾处,位于 rm删除序列的字符
其中的rm如果不传参数,则默认为删除空格
复制字符串
#strcpy(str1,str2)
str1 = 'strcpy'
str2 = str1
str1 = 'strcpy2'
print (str2)
查找字符
# 返回找到的第一个匹配字符的位置,如< 0 为未找到
str1 = 'strchr'
str2 = 's'
nPos = str1.find(str2)
print (nPos)
注意:还有另外一个类似函数index,当找不到子串时程序会报错
删除任意位置字符:
str.replace(被替换的字符, '');
#将需要被删除的字符替换为控制符;
#一次只能替换一种字符;
s = 'abc:cba'
s1 = s.replace(':', '')
print(s1)
#输出:abccba
字符串切片
代码:
x='hello world'
print(x[1:3])
输出:
el
说明:按索引从0开始,索引为1的字母是’e’;终止索引为3(不包括3这个自身索引),因此索引为2的字母是’l’。所以返回’el’
Dict字典类型操作
字典初始化
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
>>> dict = {'a': 1, 'b': 2, 'b': '3'}
>>> dict['b']
'3'
>>> dict
{'a': 1, 'b': '3'}
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
一个简单的字典实例:
dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
也可如此创建字典:
dict1 = { 'abc': 456 }
dict2 = { 'abc': 123, 98.6: 37 }
访问字典里的值
把相应的键放入熟悉的方括弧,如下实例:
实例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Name']: ", dict['Name'])
print ("dict['Age']: ", dict['Age'])
以上实例输出结果:
dict['Name']: Zara
dict['Age']: 7
注意:如果访问字典里没有的键,会输出错误KeyError
实例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print ("dict['Alice']: ", dict['Alice'])
以上实例输出结果:
dict['Alice']:
Traceback (most recent call last):
File "test.py", line 5, in <module>
print "dict['Alice']: ", dict['Alice']
KeyError: 'Alice'
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
实例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
dict['Age'] = 8 # 更新
dict['School'] = "RUNOOB" # 添加
print ("dict['Age']: ", dict['Age'])
print ("dict['School']: ", dict['School'])
以上实例输出结果:
dict['Age']: 8
dict['School']: RUNOOB
删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
实例
#!/usr/bin/python
# -*- coding: UTF-8 -*-
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空字典所有条目
del dict # 删除字典
print ("dict['Age']: ", dict['Age'] )
print ("dict['School']: ", dict['School'])
但这会引发一个异常,因为用del后字典不再存在:
异常输出:
dict['Age']:
Traceback (most recent call last):
File "test.py", line 8, in <module>
print "dict['Age']: ", dict['Age']
TypeError: 'type' object is unsubscriptable
字典键的特性
字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
两个重要的点需要记住:
1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:
实例
#!/usr/bin/python
dict = {'Name': 'Zara', 'Age': 7, 'Name': 'Manni'}
print ("dict['Name']: ", dict['Name'])
以上实例输出结果:
dict['Name']: Manni
2)键必须不可变,所以可以用数字,字符串或元组充当,所以用列表就不行,如下实例:
实例
#!/usr/bin/python
dict = {['Name']: 'Zara', 'Age': 7}
print ("dict['Name']: ", dict['Name'])
以上实例输出结果:
Traceback (most recent call last):
File "test.py", line 3, in <module>
dict = {['Name']: 'Zara', 'Age': 7}
TypeError: list objects are unhashable
Set集合类型与操作
增加元素
add() 方法用于给集合添加元素,如果添加的元素在集合中已存在,则不执行任何操作。
fruits = {"apple", "banana", "cherry"}
fruits.add("orange")
print(fruits)
#输出
{'apple', 'banana', 'orange', 'cherry'}
合并集合
fruites.update({“orange”})
删除指定元素
s.remove( x )