如何将用破折号“-”分隔的数字与另一个数字相乘?

时间:2019-02-14 22:57:18

标签: python python-3.x

我正在尝试将用破折号分隔的数字与另一个数字相乘。如何有效地做到这一点?

我尝试使用strip,但是代码变得复杂。

例如:

a = '1-2,3-4,4-5'
b = '3.0'

因此,如果您将变量“ a”的第一个值(即“ 1-2”)作为参数,则应将“-”破折号后的数字乘以“ b”变量值,结果应类似于1-2 * 3.0 = 1 -6.0

我的结果应如下:

res = '1-6.0,3-12.0,4-15.0'

2 个答案:

答案 0 :(得分:2)

您可以拆分字符串,对项目进行算术,然后将项目重新结合在一起:

     addToList = (todo, time) => {
       // just removed the unnecessary 'list' param
       // actual code left untouched
     }

     // other code

     render() {
       console.log(this.state.todo, this.state.time)
       return (
         <div>
           <InputBar handleSubmit={this.addToList} />
           <ul>
             { this.renderList() }
           </ul>
         </div>
       )
     }

这将返回:

','.join('%s-%.1f' % (i, float(b) * int(n)) for p in a.split(',') for i, n in (p.split('-'),))

答案 1 :(得分:1)

split()是您的朋友在这里。首先,您需要将字符串分成几对:

pairs = a.split(',')

现在,您将拥有['1-2', '3-4', '4-5']

现在继续拆分这些对:

for pair in pairs:
    x, y = pair.split('-')

现在,y仍然是一个字符串,因此在进行多次运算之前,您需要将其解析为具有int(y)的int。由于b是字符串,因此您还需要float(b)(或者首先从b = 3.0开始。

因此您可以将其添加到上面的外观

for pair in pairs:
    x, y = pair.split('-')
    y = int(y)

好,所以现在您需要存储结果。在循环之前创建一个空列表来存储新对:

multiplied_pairs = []
for pair in pairs:
    x, y = pair.split('-')
    y = int(y)
    multiplied_pairs.append('{}-{}'.format(x, y * float(b)))

最后,使用join重新创建新字符串,结果如下:

print(','.join(multiplied_pairs))

将它们放在一起,您将拥有:

pairs = a.split(',')
multiplied_pairs = []

for pair in pairs:
    x, y = pair.split('-')
    y = int(y)
    multiplied_pairs.append('{}-{}'.format(x, y * float(b)))

print(','.join(multiplied_pairs))

现在要进行奖金回合,如果您想使用一些生成器表达式一次完成所有操作:

print(','.join(
    '{}-{}'.format(x, int(y) * float(b)) 
    for x, y in (
        pair.split('-') for pair in a.split(',')
    )
))