面试题,第一波来袭

今日作业

  1. 为函数写一个装饰器,在函数执行之后输入 after

      @wrapper
    def func():
      print(123)

    func()
  2. 为函数写一个装饰器,把函数的返回值 +100 然后再返回。

      @wrapper
    def func():
      return 7

    result = func()
    print(result)
  3. 为函数写一个装饰器,根据参数不同做不同操作。

    • flag为True,则 让原函数执行后返回值加100,并返回。

    • flag为False,则 让原函数执行后返回值减100,并返回。

      @x(True)
    def f1():
      return 11

    @x(False)
    def f2():
      return 22

    r1 = f1()
  4. 写一个脚本,接收两个参数。

    • 第一个参数:文件

    • 第二个参数:内容

    请将第二个参数中的内容写入到 文件(第一个参数)中。

      # 执行脚本: python test.py oldboy.txt 你好
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)
View Code

5.递归的最大次数是多少?

1000次

6.看代码写结果

  print("你\n好")
print("你\\n好")
print(r"你\n好")

7.写函数实现,查看一个路径下所有的文件【所有】。

import os

def get_file_list(path):
    """
    查看路径下所有的文件
    :param path: 指定的路径
    :return:
    """

result = os.listdir(r'D:\code\s21day14')
for path in result:
print(path)
View Code

8.写代码

path = r"D:\code\test.pdf"

# 请根据path找到code目录下所有的文件【单层】,并打印出来。

写代码实现【题目1】和【题目2】

题目1

# 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)
View Code

题目2

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)
View Code

看代码写结果

依次输出如下

[10]

[123]

[10,'a']
View Code

 

3.实现如下面试题

5.实现以下面试题

题3.2

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))
"""
View Code

题3.7

v = [11,22,11,22,123,123,9,1]
v = list(set(v))
print(v)
View Code

题5.2

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)
View Code

题5.4

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)
View Code

明日预习

猜你喜欢

转载自www.cnblogs.com/yx12138/p/10727222.html