二十四、Python日期
Python中的日期不是它自己的数据类型,但是我们可以导入一个名为datetime的模块作为日期对象处理日期。
(一)日期输入输出
1、导入datetime模块并显示当前日期
import datetime
x=datetime.datetime.now()
print(x)
2、日期输出
日期包含年月日、小时、分钟、秒和微秒,例如返回当前工作日的年份和名称。
import datetime
x=datetime.datetime.now()
print(x.year)
print(x.strftime("%A"))
(二)创建日期和对象
使用模块的datetime()类(构造函数)datetime。本datetime()类需要三个参数来创建日期,年月日
import datetime
x=datetime.datetime(2021,12,12)
print(x)
注意:datetime()类也需要参数的时间和时区(小时,分钟,秒和微秒,tzone),但是它们可选并且有一个默认值0,(none对应时区)。
(三)strftime()方法
该datetime对象具有将日期对象格式化为可读字符串的方法,该方法被调用strftime()并采用一个参数format来指定返回字符串的格式。
如显示月份名称——A是year,B是month,C是date
import datetime
x=datetime.datetime(2021,12,12)
print(x.strftime("%A"))
print(x.strftime("%B"))
print(x.strftime("%C"))
(四)其它调用方法
二十五、Python Json
json是一种用于存储和交换数据的语法,json是文本,用JavaScript对象表示法编写。
Python有一个名为json的内值包,可以通过import导入,用来处理json数据。
(一)从json转换为Python
1、可以使用json.loads()方法对json字符串进行解析,结果是一个Python字典。
import json
x='{"name":"zym","age":22,"city":"guilin"}'
print(x)
#解析x
y=json.loads(x)
print(y["age"])
结果返回:
2、使用json.dumps()方法把Python对象转换为json字符串
import json
x={
"name":"zym",
"age":22,
"city":"guilin"
}
print(x)
#转为json
y=json.dumps(x)
print(y)
print(type(y))
返回:
二十六、异常处理
try模块可以测试代码块的错误,except块可以处理错误,finally无论try和except块 的结果如何都允许执行之后的代码。
(一)异常处理
例如该try模块将产生异常因为x未定义。
try:
print(z)
except:
print("z not difine")
返回:
由于try模块引发错误,因此执行execpt模块,如果没有try模块,程序将崩溃并引发错误。
(二)else搭配
else如果没有出现错误,可以使用关键字来定义要执行的代码块:
try:
print("hi")
except:
print("something not difine")
else:
print("hello")
返回:
(三)finally语句
finally指定某语句后无论try块是否引发错误都将执行这语句。
try:
print(z)
except:
print("z not difine")
finally:
print("hhhh")
返回:
注意:finally语句对于关闭和清理资源很有用。
例如尝试打开并写入不可写的文件:
try:
f =open("demofile.txt")
f.write("Lorum Ipsum")
except:
print("something went wrong")
finally:
f.close()
返回:
(四)引发异常
使用raise关键字抛出(引发)异常
例如:x小于0则引发错误并停止程序
x=-1
if x<0:
raise Exception("no number is right")
定义要引发的错误类型以及要打印给用户的文本
例如:如果不是整数则引发typeError
x="hello"
if not type(x) is int:
raise TypeError("Only int are allowed")
返回:
二十七、用户输入
使用input(),将输入后的值传递给另一个变量,相当于动态赋值。
username=input("what is your name")
print("hi!"+username)
输入:zym后回车
二十八、格式化输出
讲解在注释里
'''在字符串开头的引号/三引号前添加 f 或 F 。在这种字符串中,可以在 { 和 } 字符之间输入引用的变量'''
# year = 2021
# event = 'Referendum'
# a=f'Results of the {year} {event}'
# print(a)
'''str.format() 该方法也用 { 和 } 标记替换变量的位置a 这种方法支持详细的格式化指令'''
# yes_votes = 42_572_654
# no_votes = 43_132_495
# percentage = yes_votes / (yes_votes + no_votes)
# a='{:-5} YES votes {:1.1%}'.format(yes_votes, percentage)#调整{}内部感受下
# print(a)
'''只想快速显示变量进行调试,可以用 repr() 或 str() 函数把值转化为字符串。'''
# s = 'Hello, world.'
# print(str(s))#str() 函数返回供人阅读的值
# print(repr(s))#repr() 则生成适于解释器读取的值
# print(str(1/7))
# hellos = repr('hello')
# print(hellos)
'''7.1.1. 格式化字符串字面值'''
'''格式化字符串字面值 (简称为 f-字符串)在字符串前加前缀 f 或 F,通过 {expression} 表达式,把 Python 表达式的值添加到字符串内'''
'''下例将 pi 舍入到小数点后三位'''
# import math
# print(f'The value of pi is approximately {math.pi:.3f}.')
'''在 ':' 后传递整数,为该字段设置最小字符宽度,常用于列对齐'''
# table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 7678}
# for name, phone in table.items():
# print(f'{name:10} ==> {phone:10d}')
'''7.1.2. 字符串 format() 方法'''
# print('We are the {} who say "{}!"'.format('knights', 'Ni'))
'''花括号及之内的字符(称为格式字段)被替换为传递给 str.format() 方法的对象。花括号中的数字表示传递给 str.format() 方法的对象所在的位置。'''
# print('{0} and {1}'.format('spam', 'eggs'))
# print('{1} and {0}'.format('spam', 'eggs'))
'''使用关键字参数名引用值。'''
# print('This {food} is {adjective}.'.format(food='spam', adjective='absolutely horrible'))
'''位置参数和关键字参数可以任意组合'''
# print('The story of {0}, {1}, and {other}.'.format('Bill', 'Manfred',
# other='Georg'))
'''用方括号 '[]' 访问键来完成'''
# table = {'Sjoerd': 4127, 'Jack': 4098, 'Dcab': 8637678}
# print('Jack: {0[Jack]:d}; Sjoerd: {0[Sjoerd]:d}; ''Dcab: {0[Dcab]:d}'.format(table))
'''也可以用 '**' 符号,把 table 当作传递的关键字参数。'''
# print('Jack: {Jack:d}; Sjoerd: {Sjoerd:d}; Dcab: {Dcab:d}'.format(**table))
'''生成一组整齐的列,包含给定整数及其平方与立方'''
# for x in range(1, 11):
# print('{0:2d} {1:3d} {2:4d}'.format(x, x * x, x * x * x))
'''7.1.3. 手动格式化字符串'''
# for x in range(1, 11):
# print(repr(x).rjust(2), repr(x * x).rjust(3), end=' ')
# print(repr(x * x * x).rjust(4))
'''7.1.4. 旧式字符串格式化方法'''
# import math
# print('The value of pi is approximately %5.3f.' % math.pi)
'''7.2. 读写文件¶'''
'''最常用的参数有两个: open(filename, mode)'''
# f = open('workfile', 'w')
'''
第一个实参是文件名字符串第二个实参是包含描述文件使用方式字符的字符串。
mode 的值包括 'r' ,表示文件只能读取;'w' 表示只能写入(现有同名文件会被覆盖);
'a' 表示打开文件并追加内容,任何写入的数据会自动添加到文件末尾。'r+' 表示打开文件进行读写。
mode 实参是可选的,省略时的默认值为 'r'。
'''
# with open('workfile') as f:
# read_data = f.read()
# print(read_data)
# f.close()#如果没有使用 with 关键字,则应调用 f.close() 关闭文件,即可释放文件占用的系统资源。
# with open('workfile') as f:
# a=f.read()
# print(a)
# f.close()
'''f.readline() 从文件中读取单行数据'''
# with open('workfile') as f:
# a=f.readline()
# b=f.readline()
# c=f.readline()
# print(a,b,c)
# for i in f:
# print(i)
# f.close()
'''从文件中读取多行时,可以用循环遍历整个文件对象'''
# with open('workfile') as f:
# for line in f:
# print(line, end='')
# f.close()
'''f.write(string) 把 string 的内容写入文件,并返回写入的字符数。'''
# with open('workfile','w') as f:
# f.write('This is a test\n')
# f.close()
'''写入其他类型的对象前,要先把它们转化为字符串(文本模式)或字节对象(二进制模式)'''
# with open('workfile','a') as f:
# value = ('the answer', 42)
# s = str(value)
# f.write(s)
# f.close()
# f = open('workfile', 'rb+')
# f.write(b'0123456789abcdef')
# print(f.read())
# print(f.seek(5))
# print(f.read(1))
'''7.2.2. 使用 json 保存结构化数据'''
# import json
# a=json.dumps([1, 'simple', 'list'])
# print(a)
'''dumps() 函数还有一个变体, dump() ,它只将对象序列化为 text file '''
#如果 f 是 text file 对象
# json.dump(x, f)
#要再次解码对象,如果 f 是已打开、供读取的 text file 对象
# x = json.load(f)
© 2021 GitHub, Inc.
返回:
打印特殊字符
print(chr(0x00A9))
参考
https://blog.csdn.net/Hello_Mr_Zheng/article/details/99352176
二十九、总结
Python基础十万字已经学完了,接下来是Python基础十八万字的查漏补缺。