Python不使用int 函式把字串轉換為數字

2021-08-20 03:52:26 字數 1475 閱讀 7663

既然不能用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求出每一位字元的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的功能是將字串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 conbersion intager

number=0

for k, v in

enumerate(lst):

number += v * (10**k)

lst.reverse()

print("string conbersion intager: \n"

,lst,"\n

lst conbersion intager: \n"

,number)

conversion("12345")

python中使用函式和不使用函式程式的比較

1 不使用函式 list1 aaaa bbbb cccc list2 while list1 temp list1.pop print f printing model print nthe following model had been printed for i in list2 print ...

不使用例項名呼叫函式

class method def init self,a self.a a def cls method1 self print 需要傳入乙個引數,使用例項名呼叫此函式 def cls method2 print 不需要傳入引數,使用類名呼叫此函式 staticmethod def class me...

關於C 的Enum轉換Int型別,不使用強轉

將列舉型別轉換為int在c 裡非常簡單,直接 int 強轉就行了,但是這樣寫 不方便 使用轉換成object與system.convert.toint32 這兩種方式都會涉及到裝箱拆箱的問題,會產生效能消耗 因為任何物件都用gethashcode的方法,列舉是整數型別,返回的雜湊值剛好是整數值 pu...