利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:

from functools import reduce
CHAR_TO_FLOAT = {
    ‘0‘: 0,
    ‘1‘: 1,
    ‘2‘: 2,
    ‘3‘: 3,
    ‘4‘: 4,
    ‘5‘: 5,
    ‘6‘: 6,
    ‘7‘: 7,
    ‘8‘: 8,
    ‘9‘: 9,
    ‘.‘: -1
}
def str2float(s):
    nums=map(lambda x:CHAR_TO_FLOAT[x],s)
    #print(list(nums))
    point = 0

    def str_division(f,n):
        nonlocal point
        if n == -1:
            point = 1
            return f
        if point == 0:
            return f * 10 + n
        else:
             point = point * 10
             return f + n / point
    return reduce(str_division,nums)

print(str2float(‘123.456‘))

利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:

时间: 2024-10-27 14:16:35

利用map和reduce编写一个str2float函数,把字符串'123.456'转换成浮点数123.456:的相关文章

python练习题:利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法

方法一: # -*- coding: utf-8 -*- # 利用切片操作,实现一个trim()函数,去除字符串首尾的空格,注意不要调用str的strip()方法: def trim(s): while s[:1] == ' ': s = s[1:] while s[-1:] == ' ': s = s[0:-1] return s # 测试: if trim('hello ') != 'hello': print('测试失败!') elif trim(' hello') != 'hello':

一个java的DES加解密类转换成C#

原文:一个java的DES加解密类转换成C# 一个java的des加密解密代码如下: //package com.visionsky.util; import java.security.*; //import java.util.regex.Pattern; //import java.util.Hashtable; import javax.crypto.*; import javax.crypto.spec.*; import sun.misc.*; /** * des加密解密 */ pu

练习:不使用JavaScript内置的parseInt()函数,利用map和reduce操作实现一个string2int()函数

本练习来自廖雪峰JS教程.答案自写. 函数功能描述如下:把一个字符串13579先变成Array--[1, 3, 5, 7, 9],再利用reduce()就可以写出一个把字符串转换为Number的函数. 函数代码如下: 'use strict'; function string2int(s) { var arr = []; // 将字符串转化为数组,但此方法得到的数组的每一个元素仍是字符串 for(var i = 0; i < s.length; ++i) { arr[i] = s[i]; } /

&lt;笔试&gt;&lt;面试&gt;编写一个排序函数,实现,既可以排序整形数组,又可以排序字符串。

思路:仿照qsort函数运用函数指针实现排序整形数组.排序字符串的功能. 首先,编写整形数组比较函数和字符串比较函数:其次,仿照qsort函数将首元素地址.元素个数.元素大小.比较函数 传参编写熟悉的冒泡排序函数:最后,举例验证函数正确性. /******************************/ //1.编写冒泡排序,可以排序整形数组,也可以排序字符串. #include<stdio.h> #include<stdlib.h> #include<assert.h&g

编写一个模版函数count

返回值是数组的a[0:n-1]的数组个数. 知识点:数组的两个特殊性质对我们定义和使用作用在数组上的函数有影响,这两个性质分别是:不允许拷贝数组以及使用数组时(通常)会将其转换成指针.因为不能拷贝数组,所以我们无法以值传递的方式使用数组参数.因为数组会被转换成指针,所以当我们为函数传递一个数组时,实际上传递的饰指向数组首元素的指针. ex: void print(const int*); void print(const int[]); void print(const int[10]) 答案:

编写一个javscript函数 fn,该函数有一个参数 n(数字类型),其返回值是一个数组,该数组内是 n 个随机且不重复的整数,且整数取值范围是 [2, 32]。

首先定义个fn用来返回整数的取值范围: function getRand(a,b){ var rand = Math.ceil(Math.random()*(b-a)+a); return rand; } 再写一个func用来做去重校验: function checkArrIn(rand,array){ if(array.indexOf(rand) > -1){ return true } return false; } 最后是整体实现: function fn(n, min, max) { v

分享一个小工具:Excel表快速转换成JSON字符串

在游戏项目中一般都需要由策划制作大量的游戏内容,其中很大一部分是使用Excel表来制作的.于是程序就需要把Excel文件转换成程序方便读取的格式. 之前项目使用的Excel表导入工具都是通过Office Excel组件来实现数据访问的,效率十分令人不满.一个端游项目一般要上百个表格,手游项目20.30个表格基本也是要的,于是表格导入程序的过程一般要几分钟,项目后期要接近半个小时. 此次分享的小工具,在速度上有质的飞越,比上述方法实现的工具有接近100倍的速度提升: 完整项目源代码下载:https

PHP二维数组转换成一维数组,一个变量多个二维数组转换成一维数组,PHP二维数组(或任意维数组)转换成一维数组的方法汇总,array_reduce(); array_walk_recursive(); array_map();

方法汇总: 1. array_reduce函数法 //用array_reduce()函数是较为快捷的方法: $result = array_reduce($user, function ($result, $value) { return array_merge($result, array_values($value)); }, array()) 2. array_walk_recursive函数法 //用array_walk_recursive()函数就非常灵活,可以把任意维度的数组转换成一

利用map的特性做一个简易的投票程序

pair 1. 概念:pair是 一种模版类型,每个pair 可以存储两个值,这两种值的类型无限制.也可以将自己写的struct类型的的对象放进去. 2. 用法: pair<int ,int >p (1,2); pair<int ,int > p1= make_pair(1,2); 3. 编写程序读入一系列string和int型数据,将每一组存储在一个pair对象中,然后将这些pair对象存储在vector容器并显示 #include<iostream> #includ