【Python實踐-9】將字符串轉化為浮點型


利用mapreduce編寫一個str2float函數,把字符串'123.456'轉換成浮點數123.456

思路:計算小數位數--->將字符串中的小數點去掉--->字符串轉換為整數--->整數轉換為浮點數

 1 from functools import reduce
 2 def str2float(s):
 3     DIGITS = {'0': 0, '1': 1, '2': 2, '3': 3, '4': 4, '5': 5, '6': 6, '7': 7, '8': 8, '9': 9}
 4     b=0#計算小數位數
 5     i=0
 6     while i<len(s):
 7         if s[i]=='.':
 8             b=len(s)-i-1
 9         i=i+1
10 
11     s=s[:(len(s)-b-1)]+s[(len(s)-b):]
12     #字符轉換為整數
13     def f1(s):
14         return DIGITS[s]
15     #exp:1,2轉換為12
16     def f2(a,b):
17         return a*10+b
18     def f3(s):#整數轉換為浮點數
19         for i in range(b):
20             s=s*0.1
21         return s
22     return (f3(reduce(f2,map(f1,s))))
23 print(str2float('12.3456'))

知識點:

1、將字符串中的小數點去掉可以用切片的方法。

2、reduce把一個函數作用在一個序列[x1, x2, x3, ...]上,這個函數必須接收兩個參數,reduce把結果繼續和序列的下一個元素做累積計算,其效果就是:

reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)


免責聲明!

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



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