初学者在这里!我正在编写一个简单的代码来计算一个项目在列表中出现的次数(例如。 count([1, 3, 1, 4, 1, 5], 1)
会返回 3)。
这是我最初拥有的:
def count(sequence, item):
s = 0
for i in sequence:
if int(i) == int(item):
s += 1
return s
每次我提交此代码时,我都会得到
"int() 的文字无效,基数为 10:"
从那以后,我发现正确的代码是:
def count(sequence, item):
s = 0
for i in sequence:
if **i == item**:
s += 1
return s
但是,我只是好奇该错误语句的含义。为什么我不能离开int()
?
错误是"int() 的文字无效,基数为 10:"。 这只是意味着您传递给int
的参数看起来不像一个数字。 换句话说,它要么是空的,要么包含数字以外的字符。
这可以在python shell中重现。
>>> int("x")
ValueError: invalid literal for int() with base 10: 'x'
例如
,如果字母出现在您的序列中,您可以尝试这样的事情:
from __future__ import print_function
def count_(sequence, item):
s = 0
for i in sequence:
try:
if int(i) == int(item):
s = s + 1
except ValueError:
print ('Found: ',i, ', i can't count that, only numbers', sep='')
return s
print (count_([1,2,3,'S',4, 4, 1, 1, 'A'], 1))