0

我想知道如何使用循环在 Python 中添加这些数字?谢谢

num=input("Enter your number: ")

ansAdd= int(str(num)[7])+int(str(num)[5])+int(str(num)[3])+int(str(num)[1])

print....
4

4 回答 4

1
>>> s = '01234567'
>>> sum(map(int, s[1::2]))
16

下面是它的工作原理:

s[1::2]1从 index 开始到字符串末尾逐行取一段字符串2。有关切片的更多信息,请参阅 Python 教程的字符串部分。

map接受一个函数和一个可迭代对象(字符串是可迭代的)并将该函数应用于每个项目,返回结果列表。在这里,我们使用map将每个字符串数字转换为int.

sum接受一个可迭代对象并将其相加。

如果你想在没有summap内置函数、没有切片和显式 for 循环的情况下执行此操作:

>>> s = '01234567'
>>> total = 0
>>> for i in range(1, len(s), 2):
...     total += int(s[i])
...
>>> total
16    
于 2012-10-25T20:20:56.607 回答
1

你想用循环来做,你去:

ansAdd = 0
for x in [7,5,3,1]:
  ansAdd += int(str(num)[x])

然而,使用列表推导更 Pythonic

于 2012-10-25T20:18:12.930 回答
0
>>> num=input()
12345678
>>> sum(map(int,num[:8][1::2]))
20

这里num[:8][1::2]只返回所需的数字sum()num[:8]确保只有达到 index7的元素用于计算并[1::2]返回1,3,5,7

>>> num[:8][1::2]
>>> '2468'
于 2012-10-25T20:19:00.350 回答
0

您似乎想对用户输入的奇数位求和。用循环来做到这一点:

num_str = raw_input("Enter your number: ")
ansAdd = 0
for digit in num_str[1::2]:
    ansAdd += int(digit)

(语法[1::2]是 python 的字符串切片——三个数字由它分隔:,表示开始索引、停止索引和步骤。省略的值告诉 python 尽可能多地抓取。)

有一种更好的方法可以在不使用传统循环的情况下做到这一点:

num_str = raw_input("Enter your number: ")
ansAdd = sum(int(digit) for digit in num_str[1::2])

在 python 2 中,input将输入的文本作为 python 代码执行并返回结果,这就是为什么你必须使用str.

在 python 2中使用它被认为存在安全风险input,因为您的脚本的用户可以输入任何有效的 python 代码,并且它将被执行,没有任何问题。在 python 3raw_input中已重命名为input,旧的input已删除(eval(input())改为使用)。

于 2012-10-25T20:19:21.993 回答