Python 当试图提取偶数值时,我总是得到typeError:&x27;int';对象在尝试时不适用
新来的。尝试学习一点Python来自动化一些东西。我做这个练习是为了在字符串中找到偶数,但得到的结果是:TypeError:“int”对象是不可数的 代码如下:Python 当试图提取偶数值时,我总是得到typeError:&x27;int';对象在尝试时不适用,python,Python,新来的。尝试学习一点Python来自动化一些东西。我做这个练习是为了在字符串中找到偶数,但得到的结果是:TypeError:“int”对象是不可数的 代码如下: def extract_odd_digits(some_string): """return list of all odd digits in string""" # empty list of found digits digits = []
def extract_odd_digits(some_string):
"""return list of all odd digits in string"""
# empty list of found digits
digits = []
# check for each character if it is odd
for char in(some_string):
some_string=list(some_string)
if char in ["0","2","4","6","8"]:
list.append(digits, char)
return digits
extract_even_digits (12345654321)
我做错了什么?您需要将数字更改为字符串:
def extract_odd_digits(some_string):
"""return list of all odd digits in string"""
# empty list of found digits
digits = []
# check for each character if it is odd
for char in(some_string):
some_string=list(some_string)
if char in ["0","2","4","6","8"]:
list.append(digits, char)
return digits
extract_even_digits ("12345654321")
当函数尝试迭代该输入时,传递到函数中的数字是数据类型
int
,因为无法迭代该数据类型int
。如果您的输入是12345654321,则需要在迭代之前将输入转换为字符串。考虑创建一个整数列表,如果可能的话,可以迭代。我会这样做:
def extract_odd_digits(some_list):
"""return list of all odd digits in string"""
assert type(some_list) == list # make sure your input is list and can be iterated over
return [i for i in some_list if i%2!=0] # return a list of only odd integers
如果你不能通过一个列表,那么我会这样做
def extract_odd_digits(some_string):
"""return list of all odd digits in string"""
# empty list of found digits
odd_digits = []
# convert digits into string as you cannot iterate over a integer
digits = [i for i in str(some_string)]
# loop over your digits to find if each string
for i in digits:
try:
integer = int(i)
if integer%2!=0:
odd_digits.append(int(i))
except:
pass
return odd_digits
extract_odd_digits(123123143141421)
[1, 3, 1, 3, 1, 3, 1, 3, 1, 3]
您的
some_string
是一个int,而不是字符串。如果它应该是一个字符串,那么您的意思是'12345654321'
。您检查它是否为奇数并不是一般性的。使其如下所示if(int(char)%2)!=0:
然后将其添加到列表中。