对表的迭代似乎不适用于python

时间:2015-01-21 13:33:36

标签: python iteration multidimensional-array

我有这段代码:

table = [
['a', 'b', 'c', 'd', 'e'], 
['f', 'g', 'h', 'i', 'k'], 
['l', 'm', 'n', 'o', 'p'], 
['q', 'r', 's', 't', 'u'], 
['v', 'w', 'x', 'y', 'z']]
m = raw_input()
for row in table:
    for column in row:
        for letter in m:
            if letter == 'j':
                letter = 'i'
            if column == letter:
                print column

对字母表进行迭代,并检查所提供文本中的每个字母,如果匹配,则打印出字母表中的当前字母。我的问题是,当hello传递给它时,会打印出来:

e
h
l
l
o

而不是:

h
e
l
l
o

造成这种情况的原因是什么?其他几个文本示例都有错误,但不是全部。我的逻辑有问题吗?

4 个答案:

答案 0 :(得分:3)

按预期工作,按字母顺序打印字母 。就像表中的内容一样。

要按原样打印输出,您需要迭代用户输入首先

for letter in m: # this first
    for row in table:
        for column in row: 
            if letter == 'j':
                letter = 'i'
            if column == letter:
                print column

答案 1 :(得分:1)

您是否考虑过使用translate代替表格?

如果你想检查一个字符串并在其中替换chr,那将会更容易。

from string import maketrans

in_str = "i"
out_str = "j"
translate_in_out = maketrans(in_str, out_str)

m = raw_input()
print m.translate(translate_in_out, 'xm')

答案 2 :(得分:0)

工作正常。只是检查数组中的字母是否在您的单词中,而不是检查字母是否在您的数组中。你拿第一行,而不是第一列(字母a),而不是检查字母a是否= = m中的任何字母。你需要从另一方面开始:

m = raw_input()
for letter in m:
  if letter == 'j'
    letter = 'i'
  for row in table:
    for column in row:
      if column == letter:
         print column

答案 3 :(得分:0)

替换m中不需要的字符。

 m = m.replace('j', 'i')

m上迭代并检查每个字符是否为in一个表格行。

for char in m:
    for row in table:
        if char in row:
            print char