好吧,我是python的新手,下面是有问题的代码片段:
<!-- language: lang-py -->
List = [["W","w"],["A","A"],["a","a"]]
def ascii():
x = 0
y = 0
aValues = [[],[],[]]
for item in List:
for item in List[x]:
c = "0"
c = ord(List[x[y]])
y = y + 1
aValues[x].append(c)
x = x + 1
return aValues
aValues = ascii()
print (aValues)
当我尝试执行此操作时,会收到以下错误消息:
^{pr2}$到底是什么问题,我如何解决它?在
嗯。不幸的是你有很多问题。它们主要源于您对Python中循环的误解。在
执行
for item in List
时,item
依次设置为列表中的每个元素。因此,您不能在下一行执行for item in List[x]
这没有意义。item
已经是内部列表了,所以您需要执行for inner_item in item
(或者,调用外部列表变量更合理的方法)。在接下来的两行也毫无意义。不需要将
c
设置为“0”,然后立即将其设置为其他值。别忘了,正如我上面所说的,你已经在内部循环中有了这个项目,我们称之为inner_item
。所以你的代码应该是c = ord(inner_item)
。在希望这有帮助。在
我不知道你到底想用这个函数做什么,它有几个错误。试试这个,告诉我这是不是你想要的:
编辑1:
或者,如果每个子列表包含两个以上的元素,则此版本更好,适用于一般情况:
^{pr2}$编辑2:
根据注释,您需要使用一个函数。好的,那么让我们将解决方案实现为一个函数-首先,函数的输入应该作为参数接收,而不是像当前在代码中那样作为全局变量(
List
)。然后,将返回结果,我将借此机会展示另一种解决当前问题的方法:这样使用:
如错误消息所示,错误的行是
^{pr2}$x
是一个整数(类似于0
)。相反,您需要:也就是说,取
List
的第x
-第个元素(它本身就是一个列表),然后取该元素的第y
-个元素。在然而,你的迭代方法是非常不和谐的。您永远不会使用
item
变量,但应该使用。例如,一种简短的书写方式是:通过使用^{} 和list comprehensions,可以将代码缩减为:
相关问题 更多 >
编程相关推荐