Похоже, эта функция должна возвращать более короткий список четных или нечетных чисел из списка ввода.После вашего .split()
результатом будет список строк, поэтому математика в основном делает это:
>>> "1" % 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: not all arguments converted during string formatting
Вот исправление:
def iq_test(numbers):
oddlist = []
evenlist = []
# Splitting the input strings returns a list of strings.
# Use a list comprehension to convert them to integers.
numbers = [int(x) for x in numbers.split()]
for x in numbers:
if x % 2 == 0:
evenlist.append(x)
else: # Can just use an else here
oddlist.append(x)
if len(evenlist) > len(oddlist):
return oddlist # No need for the join now
else:
return evenlist # No need for join.
data = input('Numbers? ')
result = iq_test(data)
print(result)
Вывод:
Numbers? 1 2 3 4 5
[2, 4]