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