zoukankan      html  css  js  c++  java
  • python基础

    第一部分 必答题

    1.简述列举了解的编程语言及语言间的区别?

    • python 动态解释型强类型语言,面向对象

    • c语言 面向过程,

    2.列举python2和python3 的区别?

    • python2:

      • print 不需要括号

      • 有xrange方法

      • print(range(10)) 输出为一个列表

    • python3:

      • print 必须用括号

      • 没有xrange,range代替了xrange

      • print(range(10)) 输出为range(10)

    3.看代码写结果

     v1 = 1 or 2# 1
     v2 = 3 and 7 or 9 and 0# 7

    4.比较以下值有什么不同?

     v1 = [1,2,3]
     v2 = [(1),(2),(3)]
     v3 = [(1,),(2,),(3,)]
     # v1 v2 一样
     # v3 列表中是三个元组

    5.用一行代码实现数值交换

     a = 1
     b = 2
     
     b,a = a,b
    1. python中单引号、双引号、三引号的区别?

      • 单双引号相同,但有时需要单双引号混合使用(如出现需要转义字符)

      • 三引号不常用,用于多行注释

    1. is和==的区别?

      • is:判断两边数据的内存地址是否相同

      • ==:判断两边数据的值是否相同

    1. python里如何实现tuple和list的转换?

     lis = [1,2,3]
     tu = tuple(lis)
    1. 如何实现字符串name = '老男孩'的反转

     name = '老男孩'
    •  print(name[::-1])
    •  lis = []
       for i in name:
        lis.insert(0,i)
       name = "".join(lis)
       print(name)
    •  name = list(name)
       name.reverse()
       name = "".join(name)
    1. 两个set如何获取交集、并集、差集?

    •  s1 = {1,2,3,4}
       s2 = {5,6,7,8}
       # 交集
       s1 & s2
       # 并集
       s1 | s2
       #差集
       s1 - s2
    1. 那些情况下,y!=x-(x-y)会成立

     

    12.python中如何拷贝一个对象?

    • =

    • copy

    1. 简述赋值、浅拷贝、深拷贝的区别

    • 赋值:多个变量指向同一内存地址

    • 浅拷贝:copy源数据放到新的内存地址,如果源数据是列表等,则列表中的元素的内存地址是相同的而列表的内存地址不同

    • 深拷贝:deepcopy,拷贝一份新的数据,两者毫无关系

    1. pass的作用?

    • 表示占位,保证程序的完整性

    1. 阅读代码写结果:

     import copy
     a = [1,2,4,5,['b','c']]
     b = a
     c = copy.copy(a)
     d = copy.deepcopy(a)
     
     a.append(5)
     a[4].append('d')
     
     print(b)# [1,2,4,5,['b','c','d'],5]
     print(c)# [1,2,4,5,['b','c','d']]
     print(a)# [1,2,4,5,['b','c','d'],5]
    1. 用python实现9*9乘法表

     for i in range(1,10):
      for x in range(1,10):
      print(f"{i}*{x}={i*x} ",end="")
      print()
    1. 用Python显示一个斐波那契数列。

      • 基于列表

       f_lis = []
       for i in range(10):
        if i == 0 or i == 1:
        f_lis.append(1)
        else:
        f_lis.append(f_lis[i-2]+f_lis[i-1])
       print(f_lis)
      • 递归

       def fib(num):
        if num == 1 or num == 2:
        return 1
        else:
        return fib(num-2)+fib(num-1)
       
       for i in range(1,10):
        print(f"{fib(i)} ",end="")
       

       

    2. 如何删除列表中重复的值?

       lis = [1,2,2,3,4,4,5,5,6]
       print(list(set(lis)))
    3. 一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?

       with open("etl_log.txt","r",encoding="utf-8")as f:
        for i in f:
        print(i)
    1. a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?

     {"a":1,"b":2,"c":3,"d":4,"e":5}
    1. lambda关键字的作用?

     

    1. *args和`**kwargs作用?

    • *args:动态位置参数,接收多余的位置参数

    • **kwargs:动态关键字参数,接收多余的关键字参数

    1. 如何在函数中设置一个全局变量 ?

    1. filter、map、reduce的作用?

    • filter:过滤,按指定的规则过滤可迭代对象

    • map:映射,将可迭代对象的每个元素执行指定的方法

    • reduce:累计算,将可迭代对象执行指定的累计算

    1. 什么是匿名函数?匿名函数有什么作用?

     

    1. Python递归的最大层数?

    • 官方1000,一般995,996

    1. 什么是迭代器?什么是可迭代对象?

    • 具有__ iter __()方法的是可迭代对象

    • 具有__ iter __ ()和 __ next __()方法的是迭代器

    1. 什么是生成器?

    • 生成器的本质是迭代器,是程序员自己定义的一种迭代器

    1. 什么是装饰器及应用场景?

    • 在不改变原函数及原函数调用方式的情况下,对原函数添加新的功能

    1. 什么是反射及应用场景?

    • 通过字符串调用函数

    1. 写一个普通的装饰器。

     def warpper(func):
      def inner(*args,**kwargs):
      # 装饰代码
      ret = func(*args,**kwargs)
      return ret
      return inner

     

    1. 写一个带参数的装饰器。

     def auth(argv):
      def warpper(func):
      def inner(*args,**kwargs):
      # 装饰代码
      ret = func(*args,**kwargs)
      return ret
      return inner
      return warpper

     

    1. 求结果

     def num():
      return [lambda x:i*x for i in range(4)]
     print([m(2) for m in num()])
     
     # 结果:[6,6,6,6]
    1. def(a, b=[])这种写法有什么陷阱?

      这样写b是一个全局的变量,可能影响以后的数据

    2. 看代码写结果

     def func(a,b=[]):
      b.append(a)
     return b
     
     v1 = func(1)
     v2 = func(2,[10,20])
     v3 = func(3)
     print(v1,v2,v3)
     
     # [1,3] [10,20,2] [1,3]
    1. 看代码写结果

     def func(a,b=[]):
      b.append(a)
     return b
     
     v1 = func(1)
     print(v1)
     v2 = func(2,[10,20])
     print(v2)
     v3 = func(3)
     print(v3)
     
     #
    1. 请编写一个函数实现将IP地址转换成一个整数。

     10.3.9.12 转换规则为:
      10 00001010
      3 00000011
      9 00001001
      12 00001100
     
     再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 =
     
     def change(ip):
      lis = []
      ip_list = ip.split(".")
      for i in ip_list:
      i = bin(int(i))
      lis.append(i)
      bin_ip = " ".join(lis)
      return bin_ip
    1. 请查找一个目录下的所有文件(可能存在文件嵌套)。

       def func(path)
       for i in os.listdir(path):
        if os.path.isdir(i):
        func(i)
        return i
    1. 求结果

     import math
     print (math.floor(5.5))
     
     # 5
  • 相关阅读:
    LINUX
    DOCKER
    计算牛的数目
    计算a^3=b^3+c^3+d^3
    用递归计算C(m,n)
    A Mathematical Curiosity
    Who is lier?
    我的第一篇 实习报告
    R.java
    天气系统
  • 原文地址:https://www.cnblogs.com/hrose/p/12366208.html
Copyright © 2011-2022 走看看