面试题:python中不使用int将字符串型数字转为整形

面试题:python中不使用int将字符串型数字转为整形

一道面试题
s = '520'
如何不用int()将s转为整形?


回答:

from functools import reduce

s='520'

num_map = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}

def char2num(k):

return num_map[k]

def fn(x, y):

return x * 10 + y

print(reduce(fn, map(char2num, s))) # 520


回答:

s='520'

sum =0

for a in s:

sum = sum*10 + (ord(a)-ord('0'))

print(sum)

520

这仅是展示个思路,没人会把这个代码放入产品,严格一点的可看这里


回答:

这样如何

s = '520'

n = round(float(s))


回答:

应该来说,纯数字的字符串转换整型本身是很简单。

其实在面试中,这个问题的重点是,考虑非纯数字的字符串;当然,这一点要和面试官通过交流确认。

  • 比如是否含有负数(-:负号)
  • 比如末尾带有非数字的字符串,要不要实现字符串“尽可能”转为整数。

但是就数字字符串转换为整型本身而言,

  1. 了解 chrord 函数的使用,因为这将其带入最根本的 ASCII 编码,和其它语言一致。
  2. 然后就是个十百千万的数学位运算;

纯数字的字符串转化为整型,这么写也就够了(和一个其中答案相同):

def atoi(s):

ret = 0

for c in s:

ret = (ret * 10) + (ord(c) - ord('0'))

return ret

以上是 面试题:python中不使用int将字符串型数字转为整形 的全部内容, 来源链接: utcz.com/a/160420.html

回到顶部