字符串 "123" 转换成 123,不使用内置api,例如 int()。
方法一:使用str()函数
num="123"
sum=0
for i in num:
for j in range(10):
if i==str(j):
sum=sum*10+j
print(sum)
方法二:使用ord()函数
ord()函数以一个字符或长度为1的字符串作为参数,返回字符ASCII码对应的十进制数。
ord('0')为48,ord('1')为49.
num="1234"
sum=0
for i in num:
sum=sum*10+ord(i)-ord('0')
print(sum)
方法三:使用reduce()函数,结合方法二,一行解决。
print(reduce(lambda x, y: x * 10 + ord(y) - ord('0'), num3, 0))
reduce()函数,在python2中为内置函数,从python3中开始移到functools模块。
reduce(function,iterable,initial)function是函数名要求该函数必须有两个参数,iterable是可迭代的对象,initial是初始参数
reduce()函数常见用法:
def f(x, y):
return x * y
#print(reduce(f, [1, 2, 3, 4, 5], 1)) # 初始参数设置为1,为可选参数。
# 调用reduce函数,f(1,2)=2,f(2,3)=6,...f(1*2*3*4,5)=120,初始参数设为1,1*120=120,最后返回120.