簡體   English   中英

編寫一個函數getSumOfFirstDigit(numList),該函數接受一個正數列表,並返回列表中所有第一位數字的總和?

[英]Write a function getSumOfFirstDigit(numList) that takes in a list of positive numbers and returns the sum of all the first digit in the list?

我正在pyschools.com上進行python教程,並回答以上問題,我的方法是將每個整數轉換為字符串,反轉字符的順序,然后將其轉換回整數,除以10,然后加上其余的。 這可能是實現此目標的一個非常混亂的方法,但這是我能想到的唯一方法。

我的代碼如下:

def getSumOfFirstDigit(num): 
    answer=0
    for number in num:
        str(number)
        number[::-1]
        int(number)
        t = number%10
        answer=answer+t
    return answer`

當我使用示例getSumOfFirstDigit([12, 23, 34, 45, 56])它時,它返回錯誤:

Traceback (most recent call last):
File "Code", line 5, in getSumOfFirstDigit
TypeError: 'int' object has no attribute '__getitem__'`

我認為“ str(number)”會處理錯誤內容。

使用sum ,列表切片和生成器表達式:

>>> sum(int(str(n)[0]) for n in [1, 23, 45, 234])
9

這是一種不同的方法:您可以通過將數字重復除以10直到小於十來獲得第一位數字:

def first_digit(n):
    while n > 9:
        n /= 10
    return n

之后,只需調用sum()函數即可完成工作:

def sum_of_first_digits(seq):
    return sum(first_digit(n) for n in seq)

討論區

  • 假設:所有數字均為零或正,不檢查是否為負或非數字輸入
  • 如果不允許使用sum()函數,請編寫一個循環

當然可以,但是您需要以某種方式使用它。

嘗試這個:

answer = answer + int(str(number)[0])

或者,您可以執行以下操作:

answer += int(str(number)[0])

出現該錯誤的原因是因為您已編寫:

    str(number)

后來:

    int(number)

但未將它們分配給數字,因此它仍然是整數。

將其替換為:

    number=str(number)
    number=int(number)

你應該沒事的

def getSumOfFirstDigit(num):
    sum1 = 0
    for x in num:
        temp = str(x)
        sum1 += int(temp[0])
    return sum1

它告訴您TypeError:'int'對象沒有屬性' getitem ',因為您將變量“ number”當作一個列表來對待。 它不是。 它由num內的整數組成。 因此,“ number [::-1]”是“否”。 一種方法是...

    def getSumOfFirstDigit(num): 
        answer=[]
        for number in num:
            number=str(number)
            number=number[0]
            answer.append(int(number))
        return sum(answer)

這應該工作:

def getSumOfFirstDigit(num):
   sum = 0
   num_strings = map(str, num)
   for num in num_strings:
       sum += int(i[0])
   print (sum)

您的代碼存在的問題:

def getSumOfFirstDigit(num): 
    answer=0
    for number in num:
        str(number)           # you are not assigning the string to anything. Maybe you need to store it in a temporary variable
        number[::-1]          # number is an int here so you can't do this
        int(number)           # number is already an int
        t = number%10
        answer=answer+t
    return answer

而且您的代碼應該是這樣的(如果我正確理解了您想做什么):

def getSumOfFirstDigit(num): 
    answer=0
    for number in num:
        temp = str(number)
        temp = [::-1]
        temp = int(number)
        t = temp%10
        answer += t
    return answer
def getSumOfFirstDigit(numList): 
    total=0
    for item in numList:
        newItem=str(item)
        length=newItem[len(newItem)-len(newItem)]
        total+=int(length)
    return total

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM