Python 使用循环添加切片编号

Python 使用循环添加切片编号,python,loops,slice,Python,Loops,Slice,我想知道如何使用循环在Python中添加这些数字?谢谢 num=input("Enter your number: ") ansAdd= int(str(num)[7])+int(str(num)[5])+int(str(num)[3])+int(str(num)[1]) print.... 如果要使用循环执行此操作,请执行以下操作: ansAdd = 0 for x in [7,5,3,1]: ansAdd += int(str(num)[x]) 然而,使用列表理解更像是pytho

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

num=input("Enter your number: ")

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

print....

如果要使用循环执行此操作,请执行以下操作:

ansAdd = 0
for x in [7,5,3,1]:
  ansAdd += int(str(num)[x])
然而,使用列表理解更像是python

>>> num=input()
12345678
>>> sum(map(int,num[:8][1::2]))
20
在这里,
num[:8][1::2]
只返回
sum()
所需的数字,
num[:8]
确保在计算中只使用索引
7
之前的元素,
[1::2]
返回
1,3,5,7

>>> num[:8][1::2]
>>> '2468'

似乎您希望对用户输入的奇数数字求和。要使用循环执行此操作,请执行以下操作:

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
将整数转换回字符串的原因

在Python2中使用
input
被认为是一种安全风险,因为脚本的用户可以输入任何有效的python代码,并且它将被执行,无需询问任何问题。在Python3中,
raw_input
被重命名为
input
,旧的
input
被删除(改为使用
eval(input())

以下是它的工作原理:

s[1::2]
从索引
1
到字符串末尾,通过
2
步进,获取字符串的一个片段。有关切片的更多信息,请参见Python教程的一节

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

取一个iterable并求和

如果要在不使用
sum
map
内置项、不使用切片和显式for循环的情况下执行此操作:

>>> s = '01234567'
>>> total = 0
>>> for i in range(1, len(s), 2):
...     total += int(s[i])
...
>>> total
16    

对于[7,5,3,1]中的x:print 1.7*int(str(num)[x])
。我建议您找到一个好的Python教程,并完成它。
>>> s = '01234567'
>>> total = 0
>>> for i in range(1, len(s), 2):
...     total += int(s[i])
...
>>> total
16