Python不使用int()函數把字符串轉換為數字


Python不使用int()函數把字符串轉換為數字

方法一:利用str函數

既然不能用int函數,那我們就反其道而行,用str函數找出每一位字符表示的數字大寫。

 

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函數

利用ord求出每一位字符的ASCII碼再減去字符0的ASCII碼求出每位表示的數字大寫。
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函數

eval的功能是將字符串str當成有效的表達式來求值並返回計算結果。我們利用這特點可以利用每位字符構造成和1相乘的表達式,再用eval算出該表達式的返回值就表示數字大寫。
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
 

例題如下:

編寫一個函數,實現:將字符串'12345'轉換為[1, 2, 3, 4, 5], 再將列表值轉換為整數12345,不使用內置的int(), str()函數。

# string conbersion intager
 lst = [] def Conversion(s): s = s[::-1] num = 0  for i, v in enumerate(s): offset = ord(v) - ord('0') num += offset * (10 ** i) lst.append(offset) # lst conbersion intager  number=0  for k, v in enumerate(lst): number += v * (10**k) lst.reverse() print("string conbersion intager: \n ",lst,"\nlst conbersion intager: \n ",number) Conversion("12345")


免責聲明!

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



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