第三章练习题及答案

1.编码问题

请说明python2 与python3中的默认编码是什么?

# 答案 py2默认ASCII码,py3默认的utf8

为什么会出现中文乱码?你能列举出现乱码的情况有哪几种?

 

# 答案 #coding:utf-8 #.py文件是什么编码就需要告诉python用什么编码去读取这个.py文件。 sys.stdout.encoding,默认就是locale的编码,print会用sys.stdout.encoding去encode()成字节流,交给terminal显示。所以locale需要与terminal一致,才能正确print打印出中文。 sys.setdefaultencoding(‘utf8’),用于指定str.encode() str.decode()的默认编码,默认是ascii。 以下几种(local 为软件运行时的语言环境): 终端为UTF-8,locale为zh_CN.GBK 终端为UTF-8,locale为zh_CN.UTF-8 终端为GBK,locale为zh_CN.GBK 终端为GBK,locale为zh_CN.UTF-8

2.如何进行编码转换?

 

# 答案 字符串在python内部中是采用unicode的编码方式,所以其他语言先decode转换成unicode编码

#-*-coding:utf-8-*- 的作用是什么?

 

编码声明

3.解释py2 bytes vs py3 bytes的区别

 

# 答案 Python 2 将 strings 处理为原生的 bytes 类型,而不是 unicode(python2 str == bytes), Python 3 所有的 strings 均是 unicode 类型(python3 中需要通过 unicode ) string -> encode -> bytes bytes -> decode -> string

4.文件处理

r和rb的区别是什么?

 

# 答案 r 读模式 rb 二进制读

解释一下以下三个参数的分别作用

 

# 答案 open(f_name,'r',encoding="utf-8") f_name 文件名 r 模式 encoding 编码方式

5.函数基础:

写函数,计算传入数字参数的和。(动态传参)

 

# 答案 def func_sum(x, y): return x + y 或 lambda x , y : x +y

写函数,用户传入修改的文件名,与要修改的内容,执行函数,完成整个文件的批量修改操作

 

# 答案 # 修改列表中字符串首字母大写 def file_daxie(file): a=[] for i in file: b=i.capitalize() a.append(b) print(a)

 写函数,检查用户传入的对象(字符串、列表、元组)的每一个元素是否含有空内容。

 

# 答案 def file_k(file): n=0 for i in file: if i==‘ ‘: n+=1 print(‘有%s个空‘%n)

 写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。

 

dic = {"k1": "v1v1", "k2": [11,22,33,44]} PS:字典中的value只能是字符串或列表 #答案 def func(i): # i为所传字典 for k, v in i.items(): if len(v) > 2: dic[k]= v[:2] else: continue return i print(func(dic)) {'k1': 'v1', 'k2': [11, 22]}

解释闭包的概念

 

闭包(closure)是函数式编程的重要的语法结构。函数式编程是一种编程范式 (而面向过程编程和面向对象编程也都是编程范式)。
  在面向过程编程中,我们见到过函数(function);在面向对象编程中,我们见过对象(object)。函数和对象的根本目的是以某种逻辑方式组织代码,并提高代码的可重复使用性(reusability)。
  闭包也是一种组织代码的结构,它同样提高了代码的可重复使用性。

猜你喜欢

转载自www.cnblogs.com/cnlogs1/p/9571924.html