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时,输入变为字符串。是否有任何类型的分裂函数适用于整数和浮点数?这种做法似乎有点阴暗。什么是更清洁,更优雅的处理方式?
答案 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
这些不再是磅)等等。
转换为浮动,一如既往,很好。