正在寻找一个python .split()类型的函数,它被转换为float

时间:2017-10-28 20:38:53

标签: python

 if bool(re.search(r'\d', oz)) == 1:
        pounds, ounces = oz.split(':')
        pounds = float(pounds)
        ounces = float(ounces)  
        pounds = pounds * 16
        oz = pounds + ounces
        oz = float(oz)
        print(oz)
    else:
        print("You must enter a digit\n")
        main()

因此,当我使用split将用户输入拆分为lb和oz时,输入变为字符串。是否有任何类型的分裂函数适用于整数和浮点数?这种做法似乎有点阴暗。什么是更清洁,更优雅的处理方式?

3 个答案:

答案 0 :(得分:3)

试试这个:

map

oz.split(':')实际上对指定的iterable应用了一个函数,在本例中为InitialisingFields(String a, String b) { this(a, b, null); } InitialisingFields(String a, String b, String c) { this.a = a; this.b = b; this.c = c; }

答案 1 :(得分:2)

我会使用list-comprehension

pounds, ounces = [float(i) for i in oz.split(':')]

它与您的代码效率相同,但看起来很整洁,我发现它个人更干净。如果出于某种原因,:字符串中会有更多oz s(我说 more unpacking,它也会更多可扩展1}}需要修改)。

作为旁注,您可以将code的整个部分填充到one-liner,如果您没有sum generator,那将非常整洁必须将pounds乘以16。这并不是说它不可能(下面),而是你喜欢的东西!

oz = float(a[:a.index(":")]) + float(a[a.index(":")+1:]) * 16

答案 2 :(得分:1)

你的代码很好。至少转换为浮动是好的。有许多不相关的问题 - 你认为字符串是number:number,你称为盎司磅(pounds = pounds * 16这些不再是磅)等等。

转换为浮动,一如既往,很好。