Python每日3题,100天成大牛(1)

原创 麦叔编程 麦叔编程 1周前
收录于话题

Python 16 #面试 9

每日3题是麦叔的面试系列专题之一,每天包括初级,中级,高级难度题目各一道。
每日3题,100天之后成为大牛!
如果有不明白的,给麦叔留言。
Easy - Python的主要特性有哪些?

思考30秒再往下翻...

Python是个解释型语言,不需要编译即可运行。
Python是动态类型的,声明变量时无需指定变量的类型。
Python是面向对象的,支持类和继承。
在Python中,函数也是对象,这意味着可以将它赋值给变量,或者作为其他函数的返回值。
编写Python的速度可以很快,但是Python的运行通常要比其他语言慢。但是python支持基于其他语言的扩展。比如非常流行的python库numpy就是由C语言编写的。
python的用途十分广泛,Python在许多领域都有使用: Web应用程序,自动化,科学建模,大数据应用程序等等。它也经常被用作“胶水”语言,以使其他语言和组件发挥出色。
Normal - 列表(list)和元组(tulple)有什么区别?

思考30秒再往下翻...

列表是可变的,可以被修改。而元组是不可修改的,可以将元组当成不可编辑的列表。
元组的操作一般会比列表快。元组存储在单个内存块中,因为它不可变,因此不需要额外的空间来存储新对象。
列表是相同类型的数据队列,元组通常有不同类型的数据。
列表不能作为字典(dict)的key,元组可以。
my_tuple = (1, 2)
my_list = [1, 2]

my_dict = {my_tuple: 'value'} #正常
my_dict = {my_list: 'value'} #报错
Hard - 不使用内置api,例如 int(), 将字符串 "123" 转换成 123

思考30秒再往下翻...

方法一:利用 str 函数
def atoi(s):
num = 0
for v in s:
for j in range(10):
if v == str(j):
num = num * 10 + j
return num
方法二:利用 ord 函数
def atoi(s):
num = 0
for v in s:
num = num * 10 + ord(v) - ord('0')
return num
方法三: 利用 eval 函数
def atoi(s):
num = 0
for v in s:
t = "%s * 1" % v
n = eval(t)
num = num * 10 + n
return num
方法四: 结合方法二,使用 reduce,一行解决
from functools import reduce
def atoi(s):
return reduce(lambda num, v: num * 10 + ord(v) - ord('0'), s, 0)
支持麦叔,请点在看,谢谢!

你可能感兴趣的:(Python每日3题,100天成大牛(1))