python 不使用int()函數將字符串轉換為數字


這里的幾種方法的轉換都是不包括符號'-',空格和其他的不是數字的字母,也不包括小數點,在Leetcode上第8題是包括這些情況的。這里的方法僅適用於類似將’12356‘轉換為數字12356。

方法一:利用str函數

不能利用int函數,我們可以用str 函數找出0-9每一個數字的字符表示

def atoi(s):
    s = s[::1]   # 將s反轉
    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函數

利用ord 函數求出每一位字符的ASCII碼再減去0的ASCII碼求出每一位的數字

print(ord('1'))   # 49
print(ord('0'))   # 48
def atoi2(s):
    s = s[::1]
    num = 0
    for i,v in enumerate(s):
        num+=(ord(v)-ord('0'))*(10**i)
    return num

方法三:利用eval函數

eval函數的功能是將字符串str當成有效的表達式來求值並返回計算結果。利用每一位字符構造與1相乘的表達式,再用eval函數轉換為數字即可得到每一個字符的數字。

def atoi3(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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM