Python 整数列表的格式化问题[TypeError:在字符串格式化期间未转换所有参数]
我必须在不改变偶数位置的情况下对奇数进行排序 而将零视为偶数 我试图用懒惰的方式解决这个问题,但在格式化问题上有一个奇怪的问题 请检查以下代码:Python 整数列表的格式化问题[TypeError:在字符串格式化期间未转换所有参数],python,python-3.x,Python,Python 3.x,我必须在不改变偶数位置的情况下对奇数进行排序 而将零视为偶数 我试图用懒惰的方式解决这个问题,但在格式化问题上有一个奇怪的问题 请检查以下代码: def sort_array(source_array): result = source_array[:] odd = [] for i in result : if i % 2 == 0 or i == 0: odd.append('even_number') else
def sort_array(source_array):
result = source_array[:]
odd = []
for i in result :
if i % 2 == 0 or i == 0:
odd.append('even_number')
else:
odd.append(i)
result[i] = 'odd'
# this is not a complete implementation we need to sort odd then replace it
# string 'even_number' kind off merge
return source_array
#checking the out put below
print(sort_array([5, 3, 2, 8, 1, 4]))
print(sort_array([5, 3, 2, 8, 1, 4]) == [1, 3, 2, 8, 5, 4])
我得到了下面的输出
文件“sort\u偶数\u number.py”,第48行,在
print(sort_array([5, 3, 2, 8, 1, 4])) File "sort_even_number.py", line 40, in sort_array
if i % 2 == 0 or i == 0:
TypeError:在字符串格式化过程中并非所有参数都已转换
在python中,我们通常使用
i
变量作为索引。在这里,您迭代列表,这些是列表元素,而不是索引<代码>对于输入结果中的i:
因此,每个列表元素都是一个整数,但不是一个索引。碰巧它也是一个有效的索引,因为索引是整数
在某一点上,变量是
odd = [5, 3, 'even_number']
result = [5, 3, 2, 'odd', 1, 'odd']
您的脚本有一些问题。错误的来源是这样的<代码>结果[i]=“奇数”
不知道您是否有意这么做,但如果您在迭代iterable时不编辑iterable会更容易。而且不能对字符串进行模运算(“奇数”
)
我想你会自己破解它的其余部分。在修复它以迭代索引之后,我对此视而不见,谢谢你