我只是想知道如何将其分成不同的功能,比如2或3个功能?我还没有通过函数传递参数那么好。你会建议那样做,还是应该保持它在一个功能中的方式,因为它是一个循环?顺便说一句,它是初学者编程课程的原因,这就是为什么它很长。
def sumOfDoublePlace(userChoice):
lenChecker = len(str(userChoice))
counter = 0
sumNumber = 0
userChoice = int(userChoice)
while counter < lenChecker-1:
counter += 1
endDigit, userChoice = divmod(userChoice, 10)
if counter % 2 == 0:
evenNumber = endDigit * 2
if evenNumber < 10:
sumNumber = sumNumber + evenNumber
else:
oddDigit = endDigit % 10
firstDigit = endDigit // 10
oddSum = oddDigit + firstDigit
sumNumber = sumNumber + oddSum
else:
sumNumber = sumNumber + endDigit
if sumNumber % 10 == 0:
print('This card is valid')
else:
print('This card is invalid')
答案 0 :(得分:2)
总的来说,我认为这应该只是一个例程。但是,你正在采取一些曲折的解决方案。当你在原始文本中完全可以访问它们时,你正在做很多的工作来从卡号的整数版本中提取数字。
以下是访问所需字符串位置的开始:
def isValidCardNumber(cardNumber):
num_len = len(cardNumber)
last = int(cardNumber[-1]) # grab the last digit; convert to integer
odds = cardNumber[0:-1:2] # positions 0, 2, 4, ... last-1
evens = cardNumber[1:-1:2] # positions 1, 3, 5, ... last-1
# For each list of digits, make a list of their integer equivalents.
# ... and immediately take the sum of those integers.
odd_sum = sum([int(digit) for digit in odds])
even_sum = sum([int(digit) for digit in evens])
我将其余部分留给你。 : - )