2015-10-04 76 views
1

如何创建将返回特定字母的行和列的函数find_letter?我尝试使用if(letter in table):,但它使用原始表格。如果我写if(letter in create_table()):它告诉我,这些函数是不可迭代的。我也不知道如何返回给定字母的行和列。如何从python中的表中返回行和列?

我放弃了创建一个新的函数来查找行和列,所以我试图包括一个代码与create_table函数,但我不知道它。

+0

它看起来像'CREATE_TABLE '应该修改'table'或者返回一些东西;目前它没有。另外,你为什么要输入numpy而不使用它? – lvc

+0

我被卡住了,并试图从字面上尽我所能。 create_table()将表格放入我显示的字母表中,我没有在问题中缩进。我修好了它。 –

+0

*“不必要的顺序”* - 如果顺序无关紧要,并且原始表的大小是硬编码的,那么为什么不用任何替代内容的逻辑静态创建该表? – poke

回答

0

要找到表中所需字符的位置,您可以执行此操作。结果是包含行号和列号的元组。

def find_character(target_table, character): 
    for row in range(len(target_table)): 
     for column in range(len(target_table[row])): 
      if target_table[row][column] == character: 
       return row,column 
+0

如何使用create_table(secret)中的表格?如果我定义了一个新的函数find_character和call table,它将使用原始的函数。 –

+0

更新了它。您可以将您的表作为参数传递给此方法。 – grael

+0

它带来一个错误,说的对象noneType没有len() –

0

以下是一个残酷的解决方案(它假设字符在表中)。

它返回一个包含行号和列号的元组。

def find_character(character, table): 
    flat_table = [el for row in table for el in row] 
    i = flat_table.index(character) 
    return i/5, i % 5 

row, col = find_character(letter, table) 

如果该表是有序的,可以简化为

def find_character(character): 
    i = ord(character) - ord('A') # use 65 if you prefer 
    return i/5, i % 5 

row, col = find_character(letter) 

顺便说,建立这样排序表的快捷方式可以

from string import ascii_uppercase 

itr = [iter(ascii_uppercase[:-1])] * 5 
table = [list(z) for z in zip(*itr)] 
+0

注意OP特别说表不一定按顺序。 – lvc

+0

@ivc,好的会改正的 – Pynchia