北京网站建设公司兴田德润实惠,网站开发报价,北京空间优化平台,济南建设网站的公司吗1. Python 交换两个变量的值
答#xff1a;在 Python 中交换两个对象的值通过下面的方式即可 a , b b ,a 但是需要强调的是这并不是元组解包#xff0c;通过 dis 模块可以发现#xff0c;这是交换操作的字节码是 ROT_TWO#xff0c;意思是在栈的顶端做两个值的互换操作。…1. Python 交换两个变量的值
答在 Python 中交换两个对象的值通过下面的方式即可 a , b b ,a 但是需要强调的是这并不是元组解包通过 dis 模块可以发现这是交换操作的字节码是 ROT_TWO意思是在栈的顶端做两个值的互换操作。
2. 在读文件操作的时候会使用 read、readline 或者 readlines简述它们各自的作用
答.read() 每次读取整个文件它通常用于将文件内容放到一个字符串变量中。如果希望一行一行的输出那么就可以使用 readline()该方法会把文件的内容加载到内存所以对于大文件的读取操作来说非常的消耗内存资源此时就可以通过 readlines 方法将文件的句柄生成一个生产器然后去读就可以了。 可参考 文献、菜鸟教程
3. json 序列化时可以处理的数据类型有哪些如何定制支持 datetime 类型
答 可以处理的数据类型是 str、int、list、tuple、dict、bool、None, 因为 datetime 类不支持 json 序列化所以我们对它进行拓展。
详细知识参考序列化
#自定义时间序列化
import json
from datetime import datetime, date#JSONEncoder 不知道怎么去把这个数据转换成 json 字符串的时候它就会去调 default()函数,所以都是重写这个函数来处理它本身不支持的数据类型
#default()函数默认是直接抛异常的。
class DateToJson(json.JSONEncoder)def default(self, obj)if isinstance(obj, datetime)return obj.strftime(%Y-%m-%d %H%M%S)elif isinstance(obj, date)return obj.strftime(%Y-%m-%d)elsereturn json.JSONEncoder.default(self, obj)d {name cxa, data datetime.now()}
print(json.dumps(d, clsDateToJson))
4. json 序列化时默认遇到中文会转换成 unicode如果想要保留中文怎么办
答可以通过 json.dumps 的 ensure_ascii 参数解决代码示例如下
import json ajson.dumps({“name”“张三”},ensure_asciiFalse) print(a) 可以参考文献json 中的ensure_asciiFalse
5. 有两个磁盘文件 A 和 B各存放一行字母要求把这两个文件中的信息合并(按字母顺序排列)输出到一个新文件 C 中。
答
#文件 A.txt 内容为 ASDCF
#文件 B.txt 内容为 EFGGTG
with open(A.txt) as f1f1_txt f1.readline()
with open(B.txt) as f2f2_txt f2.readline()
f3_txt f1_txt f2_txtf3_list sorted(f3_txt)with open(C.txt, a) as ff.write(.join(f3_list))输出的文件 C 的内容为 ACDEFFGGGST
6. 如果当前的日期为 20190530要求写一个函数输出 N 天后的日期(比如 N 为 2则输出 20190601)。
答这个题目考察的是 datetime 里的 timedelta 方法的使用参数可选、默认值都为 0datetime.timedelta(days0, seconds0, microseconds0, milliseconds0, minutes0, hours0, weeks0) 通过这个参数可以指定不同的日期类型进行加减操作这里我们需要改的是 days代码如下
import datetimedef datetime_operate(n int)now datetime.datetime.now() # 获取当前时间_new_date now datetime.timedelta(daysn) # 获取指定天数后的新日期new_date _new_date.strftime(%Y%m%d) # 转换为指定的输出格式return new_dateif __name__ __main__print(datetime_operate(4))参考文献Python timedelta模块 时间增减用法 参考二
7. 写一个函数接收整数参数 n返回一个函数函数的功能是把函数的参数和 n 相乘并把结果返回。
答这个题目考查了闭包的使用。闭包请参考python中的闭包 伪代码示例如下
def 外层函数(参数):def 内层函数():print(内层函数执行, 参数)return 内层函数内层函数的引用 外层函数(传入参数)
内层函数的引用()
代码示例如下返回函数之类型是函数对象。
def mul_operate(num):def g(val):return num * valreturn gm mul_operate(8)
print(m(5))返回值为40
8. 下面代码会存在什么问题如何改进
def strappend(num)strfirstfor i in range(num)strstr(i)return str答 首先不应该使用 Python 的内置函数 str 作为变量名将其改为 s另外在Python中str 是个不可变对象每次迭代都会生成新的存储空间num 越大创建的 str 对象就会越多内存消耗越大。 使用 yield 改成生成器即可, 还有一点就是命名规范的位置函数名添加_分割比较好完整的代码如下:
def str_append(num):s firstfor i in range(num):s str(i)yield sif __name__ __main__:for i in str_append(3):print(i)输出结果
first0
first01
first0129. 一行代码输出 1-100 之间的所有偶数。
答可以通过列表生成式然后使用与操作如果如 1 与之后结果为 0 则表明为偶数等于 1 则为奇数。
方法1
print([i for i in range(1, 101) if i 0x1 0])方法2测试发现方法二效率更高
print(list(range(2, 101, 2)))10. with 语句的作用
with 语句适用于对资源进行访问的场合确保不管使用过程中是否发生异常都会执行必要的“清理”操作释放资源比如文件使用后自动关闭、线程中锁的自动获取和释放等。 Python之with语法原理
#一般访问文件资源时我们会这样处理
f open(c\test.txt, r)
data f.read()
f.close()这样写没有错但是容易犯两个毛病
如果在读写时出现异常而忘了异常处理。忘了关闭文件句柄
#以下的加强版本的写法f open(c\test.txt, r)
trydata f.read()
finallyf.close()以上的写法就可以避免因读取文件时异常的发生而没有关闭问题的处理了。代码长了一些。但使用 with 有更优雅的写法
with open(rc\test.txt, r) as fdata f.read()11. Python 字典和 json 字符串相互转化方法
答:
在 Python 中使用 dumps 方法 将 dict 对象转为 Json 对象使用 loads 方法可以将 Json 对象转为 dict 对象。
import jsondic {a: 123, b: 456, c: liming}
# dumps字典对象转换成json对象
json_str json.dumps(dic)
print(json_str)
# loadsjson对象转换成字典对象
dic2 json.loads(json_str)
print(dic2)输出结果
{a: 123, b: 456, c: liming}
{a: 123, b: 456, c: liming}我们再来看一个特殊的例子
import jsondic {a:123, b:456, c:liming}
# 转换成json格式
dic_ str(dic).replace(, \)
print(dic_)
# loadsjson对象转换成字典对象
dic_str json.loads(dic_)
print(dic_str)输出结果
{a: 123, b: 456, c: liming}首先 json.loads(jsonstr) 这里面的参数只能是 jsonstr 格式的字符串。 当我们使用 str 将字典 dic 转化为字符串以后得到的结果为:{‘a’: 123, ‘b’: ‘456’, ‘c’: ‘liming’}。 如果直接使用 json.loads(str(dic)) 你会发现出现错误原因是单引号的字符串不符合Json的标准格式。 所以再次使用了 replace(’, “”)从而得到字典其实这个例子主要目的是告诉大家 Json 的标准格式是不支持单引号型字符串的否则会出现以下错误
json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1)