3 回答
![?](http://img1.sycdn.imooc.com/533e51f30001edf702000200-100-100.jpg)
TA贡献1847条经验 获得超7个赞
首先,我们定义要检查的字符串并从 0 开始计数:
string = "1-10,12,14,16"
num_amount = 0
我们将用逗号分割字符串并获取值列表
first_list = string.split(',')
然后,我们将在每个项目中搜索连字符分隔。如果没有“-”,我们将在计数器中加一。如果有,我们减去数字并将其添加到计数器中
for i in first_list:
if i.find('-')>=0:
start_end = i.split('-')
addition = int(start_end[1]) - int(start_end[0]) + 1
num_amount += addition
else:
num_amount += 1
![?](http://img1.sycdn.imooc.com/545867790001599f02200220-100-100.jpg)
TA贡献1793条经验 获得超6个赞
这将为您完成这项工作。但请从下次开始发布您的尝试。
In [35]: val = "1-10,12,14,16"
In [50]: values = [int(i.split('-')[-1]) - int(i.split('-')[0]) +1 for i in val.split(',')]
In [53]: sum(values)
Out[53]: 13
只需以不同的时间间隔分割并检查值的计数即可。
![?](http://img1.sycdn.imooc.com/545863e80001889e02200220-100-100.jpg)
TA贡献1829条经验 获得超9个赞
您可以尝试(不要用作range变量名):
import re
re_bounds = re.compile(r"(\d+)(?:-(\d+))?")
ranges = "0-32"
print(sum((int(right) - int(left) + 1 if right else 1)
for left, right in re_bounds.findall(ranges)))
添加回答
举报