我正在尝试编写一个函数来确定一个字母是否出现在列表列表的某一行和某一列上。你知道吗
#Input:
lst2 = [['.', 'W', 'W', 'E', 'E'],
['.', '.', '.', '.', 'f'],
['A', 'A', 'A', '.', 'f']]
#Output: is_space_occupied(0, 1, lst2) should return True because 'W' is present on that spot
while is_space_occupied(1, 1, lst2) should return False because '.' is present on
that spot and not a letter.
这是我目前掌握的代码:
def letter_on_spot(row,col,lst):
A = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz'
for row in lst:
for col in lst:
if col == A:
return True
else:
return False
编辑:我在函数外部得到return作为return True的一个错误,并且不确定我的函数是否正常工作
可以使用索引访问列表元素:
对于列表列表也同样适用:
现在,你需要做的就是检查那里的符号是否有一个字符。Python为此提供了
str.isalpha()
:请注意,
str.isalpha()
还将为包含多个字符的字符串返回True
(例如"hello".isalpha()
返回True
)。如果有问题,只需检查字符串的长度,您可以使用len()
获得该长度。你知道吗这里有两个问题。你知道吗
首先,循环是不必要的;您提供了列表的索引,因此您只需要检查带有这些索引的值是否包含在字符串
A
中。不需要遍历每个元素,只需检查一个;索引列表lst
。你知道吗其次,
col == A
总是会失败(除非col = 'ABCD..yz'
)。当您应该用in
运算符检查A
是否包含col
时,可以比较它们的值。你知道吗简而言之,您可以将函数更改为:
并根据给定索引的内容得到想要的结果
True
/False
。你知道吗理想情况下,应该执行一些错误检查,以便现在允许索引产生
IndexError
;为此,可以使用列表len
,类似这样:其中,在尝试访问
lst
之前,通过测试列表lst
的长度和子列表lst[row]
的长度来检查边界是否可接受。你知道吗我不确定您的代码到底出了什么问题,但下面是一个较短的替代方案:
相关问题 更多 >
编程相关推荐