面试题,第一波来袭
-
为函数写一个装饰器,在函数执行之后输入 after
@wrapper
def func():
print(123)
func() -
为函数写一个装饰器,把函数的返回值 +100 然后再返回。
@wrapper
def func():
return 7
result = func()
print(result) -
为函数写一个装饰器,根据参数不同做不同操作。
-
flag为True,则 让原函数执行后返回值加100,并返回。
-
flag为False,则 让原函数执行后返回值减100,并返回。
@x(True)
def f1():
return 11
@x(False)
def f2():
return 22
r1 = f1() -
-
写一个脚本,接收两个参数。
-
第一个参数:文件
-
第二个参数:内容
请将第二个参数中的内容写入到 文件(第一个参数)中。
# 执行脚本: python test.py oldboy.txt 你好
-
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import sys if len(sys.argv) < 3: print('参数不够,请重新运行') # sys.exit(0) else: file_path = sys.argv[1] content = sys.argv[2] with open(file_path,mode='w',encoding='utf-8') as f: f.write(content)
5.递归的最大次数是多少?
1000次
6.看代码写结果
print("你\n好")
print("你\\n好")
print(r"你\n好")
7.写函数实现,查看一个路径下所有的文件【所有】。
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
import os def get_file_list(path): """ 查看路径下所有的文件 :param path: 指定的路径 :return: """ result = os.listdir(r'D:\code\s21day14') for path in result: print(path)
8.写代码
path = r"D:\code\test.pdf"
# 请根据path找到code目录下所有的文件【单层】,并打印出来。
写代码实现【题目1】和【题目2】
题目1
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
# 9.1 斐波那契 4000000 内最大的数 # 0 1 1 2 3 5 ... num1 = 0 num2 = 1 count = 0 while num2 < 4000000: # print(num2) # 3524578 num1,num2 = num2,num1 + num2 count += 1 print(num1,count)
题目2
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
dic1 = {'k1':1,'k2':'alex','k3':9} dic2 = {'k1':3,'k4':'alex','k2':'xx'} for k,v in dic2.items(): if k not in dic1: dic1[k] = v continue dic1[k] = dic1[k] + v print(dic1)
看代码写结果
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
依次输出如下 [10] [123] [10,'a']
3.实现如下面试题
5.实现以下面试题
题3.2
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
tupleA = (11,22,33) tupleB = ('k1','vv','asdf') info = {} for i in range(0,len(tupleA)): info[tupleA[i]] = tupleB[i] print(info) """ """ py2: xrange,不会在内存中立即创建,而是在循环时。边循环边创建。 range ,在内存立即把所有的值都创建。 py3: range ,不会在内存中立即创建,而是在循环时。边循环边创建。 list(range(10)) """
题3.7
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
v = [11,22,11,22,123,123,9,1] v = list(set(v)) print(v)
题5.2
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
for i in range(1,1001): num_list = [] # 每次循环进来:都要对这个数进行求所有约数。 for j in range(1,i): if i % j == 0: num_list.append(j) val = 1 for item in num_list: val *= item if i == sum(num_list) and i == val: print(i)
题5.4
![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.gif)
alist = [12,3,4,5] blist = [11,9,4,20] # 题意一:谁大的次数多,就返回谁。 # 题意二:比较每个元素,如果a中每个元素都比b中的每个元素大,则返回a;否则返回b ;如果所有都相等则返回A;有大有小返回b """ 需求: 1. 按照索引依次比较两个列表中的元素。 2. 如果A中的每个元素都比B中每个元素大(按照索引一一对应), 则返回A列表。 3. 如果A中的每个元素都比B中的每个元素小(按照索引一一对应),则返回B列表。 4. A中和B中的所有都相等,则返回A 5. A中和B中的有大有小,则返回B """ result = set() for i in range(len(alist)): if alist[i] > blist[i]: result.add('a>b') elif alist[i] < blist[i]: result.add('a<b') else: result.add('a==b') if len(result) != 1: print(blist) else: ele = result.pop() if ele == 'a>b' or ele == 'a==b': print(alist) else: print(blist)
明日预习
-
time
-
datetime
-
json