如何将其拆分为2或3个函数?

时间:2016-10-07 23:05:25

标签: python python-3.x

我只是想知道如何将其分成不同的功能,比如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')

1 个答案:

答案 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])

我将其余部分留给你。 : - )