python - Python函数从字符串中添加数字
问题描述
我最近遇到了这个问题,并负责编写解决方案。到目前为止,我的努力已经接近但尚未解决。
本质上,问题涉及创建一个函数,该函数传递一串数字(不需要验证),例如“12345”。
我必须编写添加所有连续数字组合的函数(最好使用 Python)。对于上面的示例,这将是:
12345 + 1 + 2 + 3 + 4 + 5
+ 12 + 23 + 34 + 45
+ 123 + 234 + 345
+ 1234 + 2345
我有一些工作,例如:
#code to add the individual numbers
indivInts = [int(d) for d in stringNumber]
for i in indivInts:
total += i
#code to add 12 + 123 + 12345, etc
for i in range(len(stringNumber)-2):
s = ''.join([str(x) for x in indivInts[:i+2]])
print('Adding loop 2: ' + s)
total += int(s)
我似乎遇到的问题是“中间”数字,即 234、34 等。
该函数应该能够接受任何整数字符串并且仍然可以工作。
解决方案
基本上,您需要原始数字的所有可能子字符串的列表。您可以为此使用带有两个循环的列表推导式的下限和上限。
>>> s = "12345"
>>> [s[i:k+1] for i in range(0, len(s)) for k in range(i, len(s))]
['1', '12', '123', '1234', '12345', '2', '23', '234', '2345', '3', '34', '345', '4', '45', '5']
然后只需获取之前生成的列表的总和,转换为int:
>>> sum(map(int, _))
16755
在一行中:
>>> sum(int(s[i:k+1]) for i in range(0, len(s)) for k in range(i, len(s)))
16755
或作为常规嵌套循环:
s = "12345"
r = 0
for i in range(0, len(s)):
for k in range(i, len(s)):
r += int(s[i:k+1])
print(r)
推荐阅读
- javascript - 使用图像关键字查询将来自谷歌的随机图像设置为背景
- vba - “没有发现细胞。” 运行 VBA 脚本时 Excel 2016 出错
- node.js - base64 转 S3 多张图片
- key-bindings - 如何重置鱼壳键绑定
- node.js - 如何知道何时运行 redis.quit()
- ios - 如何在 iOS 中使用 Firebase 删除已发送的远程推送通知?
- javascript - Express.js 服务器:使用中间件的 PUT 请求
- java - 成功登录后 Spring Boot Active Directory 身份验证不重定向
- c# - Asp.Net C# mvc。运行编译的应用程序
- java - 模拟 openInputStream 读取方法