如何使用循环选择其他所有数字?假设我们有一个8位数的序列,12345678
我们如何从右边开始选择备用数字并添加它们?因此我们必须添加8 + 6 + 4 + 2。
答案 0 :(得分:3)
reduce(sum,a[-1::-2])
向老师解释,在引擎盖下,过滤器和总和都是循环
另见
https://docs.python.org/2/tutorial/introduction.html#lists
http://pythoncentral.io/how-to-slice-listsarrays-and-tuples-in-python/
https://docs.python.org/2.3/whatsnew/section-slices.html
回答你的其他问题
def isvalid(c):
return not (sum(c[-1::-2])+sum(map(int,"".join(map(str,(2*x for x in c[-2::-2] ))))))%10
def get_cc_num():
while True:
try: return map(int,raw_input("enter 8 digit number"))
except ValueError:print "Invalid number"
print isvalid(get_cc_num())
答案 1 :(得分:1)
使用python的内置range([start], stop [, step])方法。
您可以按照-2
的步长从8向后迭代到这样:
total=sum(range(8, 0, -2))
或者以1为步长从1到8,如下所示:
total=sum(range(2, 9, 2))
答案 2 :(得分:0)
sum([int(x) for i, x in enumerate(reversed('12345678')) if i % 2 == 0]