Python 使用循环添加切片编号
我想知道如何使用循环在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
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