我们有一个表,我们应该检查它是否有用户给出的字母,所以我写了一个小代码,适用于一个列表但是当我为表运行它时它给了我假。
table = [['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*']]
def print_table():
for row in range(5):
for col in range(5):
print(table[row][col],end="")
print("")
def table_has_letter(letter):
if (letter in table):
print('true')
else:
print("false")
table_has_letter("'*'")
我尝试将一个变量附加到print_table()并尝试在代码中使用该变量来查找该字母,但它说“NoneType的参数不可迭代”。提前谢谢。
答案 0 :(得分:1)
您的表中有列表,因此您需要遍历表中的每个元素以检查字母:
def table_has_letter(letter):
for element in table:
if letter in element:
return True
return False
print (table_has_letter('*')) # not "'*'"
答案 1 :(得分:1)
table = [['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*'],
['*', '*', '*', '*', '*']]
def print_table():
print('\n'.join(['\t'.join(x) for x in table]))
def table_has_letter(letter):
return any(letter in x for x in table)
print(table_has_letter('*'))
答案 2 :(得分:0)
您实际上在代码中犯了两个逻辑错误: 1)您正在尝试检查表列表中的字母,但不检查表列表的实际行,因此您没有在那里获得True。 2)您正试图检查' *'不是*两者都是不同的东西,因为python。 以下是我的table_has_letter()方法的修改代码
def table_has_letter(letter):
for rows in table:
if (letter in rows):
return True
return False
print table_has_letter("*")