map和reduce編寫乙個str2float函式

2021-10-02 23:37:19 字數 1729 閱讀 3074

題目:利用map和reduce編寫乙個str2float函式,把字串'123.456'轉換成浮點數123.456:

#第1種方法是使用replace函式將字串中的"."替換為"",再使用digits的思路轉換為整數,最後新增小數點:

#!usr/bin/env python3

#-*-coding=utf-8-*-

#利用map和reduce編寫乙個str2float函式,把字串'123.456'轉換成浮點數123.456:

#第1種方法是使用replace函式將字串中的"."替換為"",再使用digits的思路轉換為整數,最後新增小數點::

from functools import reduce

def str2float(s):

for i in range(len(s)):

if s[i] == '.':

ss=s.replace('.','')

count = len(s)-(i+1)

def char2int(s):

digits =

return digits[s]

return reduce(lambda x,y:x*10+y,map(char2int,ss))/(pow(10,count))

print('str2float(\'123.456\')=',str2float('123.456'))

if abs(str2float('123.456')-123.456) < 0.001:

print('success')

else:

print('fail')

#第2種方法是使用split函式將字串在"."處分割成兩部分,分別用digits函式轉換為整數,最後把小數部分加上小數點與整數部分相加。

#!usr/bin/env python3

#-*-coding=utf-8-*-

#利用map和reduce編寫乙個str2float函式,把字串'123.456'轉換成浮點數123.456:

from functools import reduce

def str2float(s):

def char2num(s):

digits=

return digits[s]

data = s.split('.',1)

integer = reduce(lambda x,y:x*10+y,map(char2num,data[0])) #出錯點:這裡是char2num,非char2num()

decimal = reduce(lambda x,y:x*10+y,map(char2num,data[1])) * 0.1**len(list(map(char2num,data[1])))

return integer +decimal

print('str2folat(\'123.456\')=',str2float('123.456'))

if abs(str2float('123.456')-123.456) < 0.01:

print('success')

else:

print('fail')

備註:

1)**:執行取冪運算,ab會返回a的b次方。

print(2**10)

#1024

2)pow()方法返回 xy(x的y次方) 的值。

編寫乙個makefile

什麼是makefile?對於大多數的windows程式設計師來講,makefile可能不是那麼重要,因為windows的ide都為程式設計師做好了這個工作。但是在linux下程式設計,會不會寫makefile,從側面上說明乙個人是否具備完成大型工程的能力。makefile的作用 makefile是用...

編寫乙個webpack loader

loader是一種打包的方案,webpack預設只識別js結尾的檔案,當遇到其他格式的檔案後,webpack並不知道如何去處理。此時,我們可以定義一種規則,告訴webpack當他遇到某種格式的檔案後,去求助於相應的loader。新建loaders資料夾並建立三個loaders檔案 remove co...

如何遍歷乙個Map

對於j a中map的遍歷方式,很多文章都推薦使用entryset,認為其比keyset的效率高很多。理由是 entryset方法一次拿到所有key和value的集合 而keyset拿到的只是key的集合,針對每個key,都要去map中額外查詢一次value,從而降低了總體效率。那麼實際情況如何呢?為...