我正在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(数字)”会处理错误所说的内容。
答案 0 :(得分:3)
使用sum
,列出切片和生成器表达式:
>>> sum(int(str(n)[0]) for n in [1, 23, 45, 234])
9
答案 1 :(得分:2)
这是一种不同的方法:你可以通过反复将数字除以10得到第一个数字,直到它小于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)
答案 2 :(得分:1)
当然会,但你需要以某种方式使用它。
试试这个:
answer = answer + int(str(number)[0])
或者代替回答=回答+某事,你可以这样做:
answer += int(str(number)[0])
答案 3 :(得分:1)
您收到该错误的原因是因为您写了:
str(number)
以及后来:
int(number)
但没有将它们分配给数字,所以它仍然是一个int。
替换为:
number=str(number)
number=int(number)
你应该没事。
答案 4 :(得分:1)
def getSumOfFirstDigit(num):
sum1 = 0
for x in num:
temp = str(x)
sum1 += int(temp[0])
return sum1
答案 5 :(得分:1)
它告诉你TypeError:'int'对象没有属性' getitem ',因为你将变量“number”视为列表。它不是。它是num中的数字的整数,它们是整数。所以“数字[:: - 1]”是不是没有。一种方法是....
def getSumOfFirstDigit(num):
answer=[]
for number in num:
number=str(number)
number=number[0]
answer.append(int(number))
return sum(answer)
答案 6 :(得分:0)
这应该有效:
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
答案 7 :(得分:0)
def getSumOfFirstDigit(numList):
total=0
for item in numList:
newItem=str(item)
length=newItem[len(newItem)-len(newItem)]
total+=int(length)
return total