Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/278.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当试图提取偶数值时,我总是得到typeError:&x27;int';对象在尝试时不适用_Python - Fatal编程技术网

Python 当试图提取偶数值时,我总是得到typeError:&x27;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 = []

新来的。尝试学习一点Python来自动化一些东西。我做这个练习是为了在字符串中找到偶数,但得到的结果是:TypeError:“int”对象是不可数的

代码如下:

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:
然后将其添加到列表中。