序言
要學(xué)會(huì)做自己人生的太陽(yáng)指攒,無(wú)需借別人的光慷妙,也可以把自己的人生路照亮。
在不使用int()函數(shù)的情況下如何把字符串轉(zhuǎn)換為數(shù)字允悦,如把字符串"12345"轉(zhuǎn)換為數(shù)字12345膝擂。
利用str函數(shù)
既然不能用int函數(shù),那我們就反其道而行隙弛,用str函數(shù)找出每一位字符表示的數(shù)字大寫架馋。
def atoi(s):
s = s[::-1]
num = 0
for i, v in enumerate(s):
for j in range(0, 10):
if v == str(j):
num += j * (10 ** i)
return num
利用ord函數(shù)
利用ord求出每一位字符的ASCII碼再減去字符0的ASCII碼求出每位表示的數(shù)字大寫。
def atoi(s):
s = s[::-1]
num = 0
for i, v in enumerate(s):
offset = ord(v) - ord('0')
num += offset * (10 ** i)
return num
利用eval函數(shù)
eval的功能是將字符串str當(dāng)成有效的表達(dá)式來求值并返回計(jì)算結(jié)果全闷。我們利用這特點(diǎn)可以利用每位字符構(gòu)造成和1相乘的表達(dá)式绩蜻,再用eval算出該表達(dá)式的返回值就表示數(shù)字大寫。
def atoi(s):
s = s[::-1]
num = 0
for i, v in enumerate(s):
t = '%s * 1' % v
n = eval(t)
num += n * (10 ** i)
return num
通過模塊轉(zhuǎn)換
import string
str='555'
num=string.atoi(str)
# num即為str轉(zhuǎn)換成的數(shù)字
轉(zhuǎn)換為浮點(diǎn)數(shù):string.atof(str)