Python小题:基础

1.输入一行字符,分别统计出其中英文字母,空格,数字,和其他字符的个数

s = '787r3huihiu uhiahfoihw oij3o24;/"\.;oihjo2i h34oihoi531'
alpha = 0
space = 0
digit = 0
other = 0
for i in s:
    if i.isalpha():
        alpha += 1
    elif i.isspace():
        space += 1
    elif i.isdigit():
        digit += 1
    else:
        other +=1
print(alpha, space, digit, other)

2. 关于变量赋值:交换a,b两个变量的值

a=1
b=2
a,b=b,a
print(a,b)

3.如果用多个变量接收列表或元组的值

a,*b=[1,2,3]
print(a,b)

4.输入一个字符串,返回倒序排列的结果;如,abcdef,返回fedcba

s='abcdef'
print(s[::-1])

5. 将"北京 上海 广州 深圳"转换为 “北京,上海,广州,深圳”

s="北京 上海 广州 深圳"
print(','.join(s.split(' ')))

6. 短路计算

print(3 and 2)
print(3 or 2)
# 应用
user = None
def foo():
    user = "yuan"
    return user or "root"

print(foo())

7. 零值概念

# Python中规定指定任何非0或非空(None)的值为True。
# 0,None为False。
# 所以在Python中,None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于Flase,其它值为True。

8.is和==的区别

l1 = [1, 2, 3]
l2 = [1, 2, 3]
print(l1 == l2)
print(id(l1) == id(l2))
# is比较的是两对象的地址值;==比较的是两对象的值,调用的是对象的__eq__()方法

9. 将两个列表[1, 5, 7, 9],[2, 2, 6, 8]合并为[1, 2, 2, 5, 6, 7, 8, 9]

l1=[1,2,3,4,5]
l2=[6,7,8,9,10]
print(l1 + l2)
l1.extend(l2)
print(l1)

10. a = [1,2,3,4,5,6],a[::-3] 的结果是

a = [1,2,3,4,5,6]
print(a[::-3])      #[6,3]

11. 列表去重再排序

l = [1, 4, 5, 6, 6, 4, 2, 1]
l2 = list(set(l))
l2.sort()
print(l2)

12. s = ‘ajldjlajfdljfddd’,去重并从小到大排序输出’adfjl'

s = 'ajldjlajfdljfddd'
l=list(set(list(s)))
l.sort()    # sort()方法将列表l排序,但是返回值为None
print(''.join(l))

13.列表和元组有什么不同?

不同点:
元组为只读列表;列表为可变列表;
元组可hash,可以作为字典的键;列表不可hash,不可以作字典的键;

相同点:
列表元组都可以存储不同数据类型的值;都可索引,可切片,可计数;

14.python中哪些是可变类型,哪些是不可变类型

可变类型:list,dict,set
不可变类型:int,folat,str,boolean,tuple,

15.解释下python的深浅拷贝

16.请合并下面两个字典  a = {“A”: 1, “B”: 2},b = {“C”: 3, “D”: 4}

a = {'A': 1, 'B': 2}
b = {'C': 3, 'D': 4}
a.update(b)
print(a)

17.python的三元运算表达

# 三元运算符(三目运算符)的表达式
# True_statements if expression else False_statements

x = 20
y = 30
ret = x if x > y else y
print(ret)
print("x是一个偶数" if x % 2 == 0 else "x是一个奇数")

18.统计一段字符串中每个字符出现的次数,比如abcaabccab

# 方式1
s = "abcaabccab"
# print(s.count("ab"))
dic = {}
for i in s:
    dic[i] = dic.get(i, 0) + 1
print(dic)

# 方式2
s = "abcaabccab"
result = {x: s.count(x) for x in s}
print(result)

19.字典和列表的查找速度,哪个更快?

列表查询是遍历方式,时间复杂度是O(n), 字典查询是hash映射 时间复杂度是O(1);当数据量小的时候切片查询比map快,但是数据量大的时候字典的优势就体现出来了

20.如何实现[‘1’, ‘2’, ‘3’]变成[1, 2, 3]

# 方法一
l = ['1', '2', '3', '4']
ls=[]
for i in l:
    ls.append(int(i))
print(ls)

# 方法二
# [表达式 for 迭代变量 in 可迭代对象 [if 条件表达式] ]
print([int(i) for i in l]

21.获取1-100中所有偶数平方列表

print([i ** 2 for i in range(1, 101) if i % 2 == 0])

22.1,2,3,4,5能组成多少个无重复的元素?

# 方式1
li = [1, 2, 3, 4, 5]
new_li = []
       
for i in li:
    for j in li:
        for m in li:
            if i != j and i != m and j != m:
                num_str = str(i) + str(j) + str(m)
                num = int(num_str)
                new_li.append(num)
       
new_li.sort()
print(new_li)
       
# 方式2
ret = [int(str(i) + str(j) + str(k)) for k in li for j in li for i in li if i != j and i != k and j != k]
ret.sort()
print(len(ret))
print(ret)

23. 如何交换字典 {“A”:1,“B”:2}的键和值

# { 新键值对 for 迭代变量 in 可迭代对象 [if 条件表达式] }
d1 = {"A": 1, "B": 2}
print({v: k for k, v in d1.items()})

24.将所有的key值变为大写

print({k.upper():v for k,v in d.items()})

25.pass语句的作用是什么?

占位语句:不执行任务操作

26.如何在一个函数内部修改全局变量?

x = 10
       
def foo():
    global x
    x = 100
       
foo()
print(x)

27. 如何修改一个非局部非全局变量

def foo():
    x = 10
    
    def bar():
        # print(count)
        # count = 10
            
        nonlocal x
        x = x + 1  
    bar()
foo()

28.python的最大递归层数

import sys
print(sys.getrecursionlimit())

29.请解释*args,**kwargs的含义

*args 代表位置参数,它会接收任意多个参数并把这些参数作为元组传递给函数。
     
**kwargs 代表的关键字参数,允许你使用没有事先定义的参数名。
     
位置参数一定要放在关键字参数的前面。
     
作用:使用*args和**kwargs可以非常方便的定义函数,同时可以加强扩展性,以便日后的代码维护。

30.实现一个反转整数的函数,例如 -123 –> -321

def reverse_str(value):
    if value > -10 and value < 10:
        return value
    if str(value)[0] == '-':
        return int(str(value)[::-1])
    else:
        return -int(str(value)[::-1])

print(reverse_str(123))

31.python的函数传参是传值还是传址

def  foo(x):
    print(id(x))
    x = 20
    # x = []
    # x.append(10)
    print(id(x))
       
# a = []
a = 10
print(id(a))
foo(a)

32.对数值1.3425四舍五入保留2位小数点

# 常用的内置函数
bool
bin
oct
hex
sum
max
min
abs
pow
divmod  
round
chr
ord
list
dict
set
len
any
all
zip
sorted #(最常考的)


print(round(1.3425, 2))

33.sortet排序:_dict = {‘a’: 1, ‘b’: 2, ‘c’: 3},要求根据value值从大到小输出key

# 案例1
l = [1, 4, 6, 2, 8, 3]
print(sorted(l))
       
# 案例2
l2 = [("yuan", 22), ("rain", 33), ("alvin", 24)]
print(sorted(l2, key=lambda item: item[1]))
       
# 案例3
_dict = {'a': 1, 'b': 2, 'c': 3}
ret = sorted(_dict.items(), key=lambda x: x[1], reverse=True)
print([i[0] for i in ret])

34.如何把元组(“a”,“b”)和元组(1,2),变为字典{“a”:1,“b”:2}

a = ("a", "b")
b = (1, 2)
print(dict(zip(a, b))) # {'a': 1, 'b': 2}

35.一条语句把 L=[(1,2), (3,4)] 转换成 [(1,3),(2,4)],可以写下不同的方法

L = [(1, 2), (3, 4)]
       
print([j for i in L for j in i])  # [1, 2, 3, 4]
print([(j[1], j[0]) for j in L])  # [(2, 1), (4, 3)]
print(list(zip(L[0], L[1])))  # [(1, 3), (2, 4)]

36.合并所有二维列表元素到一个列表:l = [[1, 2], [3, 4], [5, 6]]

l = [[1, 2], [3, 4], [5, 6]]
print([k for i in l for k in i])

37.有个列表a = [1, 3, 5, 7, 0, -1, -9, -4, -5, 8] 使用filter 函数过滤出大于0的数

a = [1, 3, 5, 7, 0, -1, -9, 4, -5, 8]
print(list(filter(lambda x: x > 0, a)))
# 思考如果过滤大于0的奇数
print(list(filter(lambda x: x > 0 and x % 2 == 1, a)))

38.列表b = [“张三”, “张四”, “张五”, “王二”] 过滤掉姓张的姓名

print(list(filter(lambda i:i.startswith('张'), b)) )    # 过滤出张姓的同学
print(list(filter(lambda i: not i.startswith('张'), b)) )    # 过滤掉张姓的同学

39.过滤掉列表中不及格的学生

a = [
        {"name": "张三", "score": 66},
        {"name": "李四", "score": 88},
        {"name": "王五", "score": 90},
        {"name": "陈六", "score": 56},
     ]
print(list(filter(lambda i:i["score"]>=60 , a)))

40. 请将列表 [1,2,3,4,5] 使用map函数转变成 [1,4,9,16,25]

l = [1, 2, 3, 4, 5]      
# 方案1
print([i * i for i in l])
       
       
# 方案2
def foo(item):
    return item * item      
print(list(map(foo, l)))
       
# 方案3
print(list(map(lambda x: x * x, l)))

41. map函数对列表a=[1,3,5],b=[2,4,6]相乘得到[2,12,30]

a = [1, 3, 5]
b = [2, 4, 6]
       
# 方案1:
print([i[0] * i[1] for i in zip(a, b)])
       
# 方案2:
print(list(map(lambda x, y: x * y, a, b)))

42. 将 ‘python is shell’ 转为 ‘nohtyp si llehs’

print(' '.join(list(i[::-1] for i in s.split(' '))))
print(' '.join(list(map(lambda i:i[::-1],s.split(' ')))))

43. 关于迭代器、生成器

44.range函数的用法

45.一行实现1-100的求和

print(sum(range(1,101)))

46.xrange和range的区别?

xrange在2版本就是3中range的作用,构建一个迭代器对象

47.如何快速读取5个G的文件的行数? 

print(max(len(x.strip()) for x in open('apple.py','r')))

48. 关于生成器的面试题:

49.聊一聊你对闭包的理解

50.

51.请实现一个装饰器,限制该函数被调用的频率?

52.解释什么样的语言能够用装饰器?

53.从0-99这100个数中随机取出10个,要求不能重复,可以自己设计数据结构

54.如何随机打乱列表中的元素?

55.输入某年某月某日,判断这一天是这一年的第几天?

56.如何用python删除一个文件

57.正则匹配以163.com或qq邮箱

58.字符串a = “not 404 found 张三 99 深圳”,每个词中间是空格,用正则的方法,最终输出"张三 深圳"

59.正则中 .*?的作用

60.序列化和反序列化

61.__str____repr__的区别

62.__dir__的功能

63.__new____init__的作用

64.如何判断一个对象是否可调用

65.关于面向对象的变量查找

66.实现一个Singleton单例类, 要求遵循基本语言编程规范(用尽量多的方式)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值