寻找一个python.split()类型的函数

2024-09-28 22:31:43 发布

您现在位置: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时,输入就变成了一个字符串。有没有什么分裂函数可以处理整数和浮点数?这种做法似乎有点阴暗。什么是更干净、更优雅的处理方式?你知道吗


Tags: reyousearchiffloatelsesplitbool
3条回答

你的密码很好。至少转换成float是好的。有很多问题是不相关的-你假设字符串是number:number,你称之为盎司磅(pounds = pounds * 16这些不再是磅)等等。你知道吗

像以前一样,转换为浮动是很好的。你知道吗

我会使用list-comprehension

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

它的效率和你的代码是一样的,但是看起来很整洁,我个人觉得它更干净。如果由于某种原因,oz字符串中会有更多的:,那么它的伸缩性也会更大(我说,unpacking需要修改,所以它的伸缩性会更大)。你知道吗


作为旁注,你可以把你的code的整个部分塞进一个one-liner,如果你不必把pounds乘以16,这将是非常整洁的sum。这并不是说这是不可能的(下文),但它取决于你喜欢什么!你知道吗

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

试试这个:

pounds, ounces = map(float, oz.split(':'))

map实际对指定的iterable应用一个函数,在本例中是oz.split(':')

相关问题 更多 >