1.下面的代码会输入什么?
def f(x,l=[]):
for i in range(x):
l.append(i*i)
print(l)
f(2)
f(3,[3,2,1])
f(3)
[0, 1]
[3, 2, 1, 0, 1, 4]
[0, 1, 0, 1, 4]
2.补充缺失的代码
def print_direchory_contents(sPath):
"""
合格函数接受文件夹的名称作为输入参数,
返回该文件夹中文件的路径,
以及其包含文件夹中文件的路径。
(注意区分不同平台)
"""
import os
def print_directory_contents(sPath):
"""
这个函数接受文件夹的名称作为输入参数,
返回该文件夹中文件的路径,
以及其包含文件夹中文件的路径。
"""
# 遍历获取当前文件路径下的文件路径
for sChild in os.listdir(sPath):
sChildPath = os.path.join(sPath,sChild)
print(sChildPath)
# 判断文件下是否含有其他文件,如果有调用原函数继续执行
if os.path.isdir(sChildPath):
print_directory_contents(sChildPath)
3.A0-A6的值是什么?
A0=dict(zip(('a','b','c','d','e'),(1,2,3,4,5)))
A1=range(10)
A2=sorted([i for i in A1 if i in A0])
A3=sorted([A0[s] for s in A0 ])
A4=[i for i in A1 if i in A3]
A5={i:i*i for i in A1}
A6=[[i,i*i] for i in A1]
A0:{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
A1:range(0,10)
A2:[]
A3:[1,2,3,4,5]
A4:[1,2,3,4,5]
A5:{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
A6:[[0, 0], [1, 1], [2, 4], [3, 9], [4, 16], [5, 25], [6, 36], [7, 49], [8, 64], [9, 81]]
4.请用random打乱一个排好序的list对象a_list.
#random模块中的shuffle(洗牌函数)
import random
a_list = [1, 2, 3, 4]
random.shuffle(a_list)
print a_list
5.实现一个字符串反转的函数:(例如,输出:'hello python' 输出:'nohtyp olleh')
#1.使用字符串切片
def reverse1():
s = input("please input a string: ")
return s[::-1]
if __name__ == '__main__':
print(reverse1())
#2.使用递归
def reverse2(str):
if str == "":
return str
else:
return reverse2(s[1:]) + s[0]
if __name__ == '__main__':
str = 'hello python'
print(reverse2(str))
#3.使用列表的reverse
def reverse3(s):
l = list(s)
l.reverse()
print("".join(l))
if __name__ == '__main__':
reverse3('hello python')
6.定义A=("a","b","c","d"),执行del A[2]后的结果为:
异常
7.代码a = [{i:j} for i,j in enumerate(xrange(5))],请写出a的最终结果
[{0: 0}, {1: 1}, {2: 2}, {3: 3}, {4: 4}]
# 解析:xrange()是python2.7中的方法,同python3中的range(),列表推导式的方式获取一个字典,i=j
#enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。enumerate(sequence, [start=0]) sequence -- 一个序列、迭代器或其他支持迭代对象。start -- 下标起始位置。
8.以下代码输出的结果是什么?
var1 = 100
var2 = 100
list1 = [101,102,103]
list2 = [101,102,103]
print(var1 is var2)
print(list1 is list2)
True
False
# 解析:字符串,数值型数据的变量内存地址一致,列表元组等不一致
9.对比
*args **kwargs 的区别
__new__ __init__ 的区别
is == 的区别
range xrange 的区别
(1)*args 表示非关键字收集参数,收集的实参会组成一个元组,接收没有任何形参接收的非关键字实参。可以与普通形参共存。
**kwargs 表示关键字收集参数,收集的实参会组成一个字典,形参名作为键,值为值,仅接收没有任何形参接收的关键字参数。可以与普通形参共存。
(2)__new__:在实例化对象是触发,参数至少一个cls,接收当前类。必须返回一个对象是实例,触发顺序:先触发__new__才会触发__init__。
__init__: 初始化对象是触发,参数至少一个self,接收对象。使用该方式初始化的成员都是直接写入对象当中,类中无法具有。
(3)is: 也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
==: 是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等
(4)range :range会直接生成一个list对象
xrange:并不会直接生成一个list对象,而是作为一个生成器,会在每一个调用时返回其中的一个值。
在 python3 中,去除了 range 函数,将 xrange 函数更名为 range 函数
10.装饰器用途:@staticmethod 和@classmethod,@property用途
@staticmethod #静态方法,相当于把一个普通函数绑定到类上 函数既不能接收实例也不能接收类
@classmethod #类方法,类方法是给类用的,类在使用时会将类本身当做参数传给类方法的第一个参数,python为我们内置了函数classmethod来把类中的函数定义成类方法。用途:不用实例化,可以直接用类来调用方法
@property #把一个方法当作属性来使用,便于访问
11.Fibonacci数列
def Fibonacci(n):
a,b = 0,1
while a < n :
print(a,end = '')
a,b = b,a+b
print()