当尝试提取偶数值时,我不断收到 typeError:"int"对象不可迭代 whn tryoing



此处为新手。试着学习一些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]

相关内容

最新更新