既然不能用int函式,那我們就反其道而行,用str函式找出每一位字元表示的數字大寫。
def利用ord求出每一位字元的ascii碼再減去字元0的ascii碼求出每位表示的數字大寫。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
defatoi(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算出該表示式的返回值就表示數字大寫。
defatoi(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 intagerlst =
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...