python TypeError在字符串格式化期间未转换所有参数

python TypeError在字符串格式化期间未转换所有参数,python,typeerror,Python,Typeerror,该程序旨在通过检查数字是否可以被2除而不带余数来查找字符串中的奇数,代码如下: def iq_test(numbers): for x in numbers.split(): if x % 2 != 0: return x iq_test("1 2 3 4 5") Traceback (most recent call last): File "python", line 6, in <module> File "python", l

该程序旨在通过检查数字是否可以被2除而不带余数来查找字符串中的奇数,代码如下:

def iq_test(numbers): 
    for x in numbers.split():
       if x % 2 != 0:
          return x 

iq_test("1 2 3 4 5")
Traceback (most recent call last):
File "python", line 6, in <module>
File "python", line 3, in iq_test
TypeError: not all arguments converted during string formatting
以下是运行代码时出现的错误:

def iq_test(numbers): 
    for x in numbers.split():
       if x % 2 != 0:
          return x 

iq_test("1 2 3 4 5")
Traceback (most recent call last):
File "python", line 6, in <module>
File "python", line 3, in iq_test
TypeError: not all arguments converted during string formatting
回溯(最近一次呼叫最后一次):
文件“python”,第6行,在
iq_测试中的文件“python”,第3行
TypeError:在字符串格式化过程中并非所有参数都已转换

任何帮助都将不胜感激

x
是一个字符串,因此
%
解析为字符串插值而不是模。使用
int(x)%2==0


出现错误,因为2是字符串格式化参数,但字符串不包含匹配数量的格式说明符。

当您对字符串文本使用
%
(或更详细)时,您正在尝试格式化:

>>> a = 'name'
>>> ('%s' % a) == 'name'
True
但您打算在
int
上使用此选项,因此需要将字符串文本强制转换为整数:

if int(x) % 2 != 0
然后,
mod
将尝试查找模数,而不是尝试格式化

但是,函数将在找到第一个奇数后立即返回。如果要查找所有奇数,而不仅仅是第一个,可以将奇数累加到
列表中
,然后返回关联列表:

如果x%2!=0:-->
如果int(x)%2!=0:
(python认为您正在使用百分号进行字符串格式化)。顺便说一句,你可能想做些别的事情而不是
return
,因为它将在单个true
if
之后返回,因此只处理数字1。