![](/img/trans.png)
[英]How to write a function that takes a positive integer N and returns a list of the first N natural numbers
[英]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)
當然可以,但是您需要以某種方式使用它。
嘗試這個:
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.