[英]Python: In a for loop going through a list, how do you multiply by every other element of that list
[英]How to multiply every other list item by 2 in python
我正在制作一个验证信用卡的程序,方法是将卡号中的每个其他数字乘以2; 在我将乘以2的数字与未乘2的数字相加之后,所有的两位数数字均加上其数字的总和,因此14变为1 + 4。 我下面有一张解释这一切的照片。 我正在制作一个执行所有步骤的python程序。 我已经在下面完成了一些代码,但是我不知道下一步该怎么做? 请帮助,将不胜感激。 无论如何,我拥有的代码将返回错误。
class Validator():
def __init__(self):
count = 1
self.card_li = []
while count <= 16:
try:
self.card = int(input("Enter number "+str(count)+" of your card number: "))
self.card_li.append(self.card)
#print(self.card_li)
if len(str(self.card)) > 1:
print("Only enter one number!")
count -= 1
except ValueError:
count -= 1
count += 1
self.validate()
def validate(self):
self.card_li.reverse()
#print(self.card_li)
count = 16
while count >= 16:
self.card_li[count] = self.card_li[count] * 2
count += 2
Validator()
要执行该总和:
>>> s = '4417123456789113'
>>> sum(int(c) for c in ''.join(str(int(x)*(2-i%2)) for i, x in enumerate(s)))
70
该代码由两部分组成。 第一部分创建一个字符串,每隔一个数字加倍:
>>> ''.join(str(int(x)*(2-i%2)) for i, x in enumerate(s))
'8427226410614818123'
对于字符串s
每个字符x
,这会将字符转换为整数int(x)
并根据索引i
是偶数还是奇数将其乘以1或2: (2-i%2)
。 所得乘积将转换回字符串: str(int(x)*(2-i%2))
。 然后将所有琴弦连接在一起。
第二部分对字符串中的每个数字求和:
>>> sum(int(c) for c in '8427226410614818123')
70
您需要在while()
循环中增加count
。 同样, card_li
if..
检查之后,将用户输入追加到card_li
列表中。 您的init方法应类似于:
def __init__(self):
count = 1
self.card_li = []
while count <= 16:
try:
self.card = int(input("Enter number "+str(count)+" of your card number: "))
if len(str(self.card)) > 1:
print("Only enter one number!")
self.card_li.append(self.card)
count += 1
except ValueError:
pass
self.validate()
至于您的validate方法,即使按照您编写的逻辑来看,它似乎也不完整。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.