table 的迭代似乎在 python 中不起作用

Iteration over table seems to not be working in python

我有这个代码:

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

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

它按预期工作,按字母顺序打印字母。就像 table.

里的一样

要打印收到的输出,您需要先迭代用户输入:

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

它工作正常。只是检查字母是否在你的数组中,而不是检查数组中的字母是否在你的单词中。你拿第一行,而不是第一列(字母 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

您是否考虑过使用 translate 而不是 table?

如果你想检查一个字符串并替换其中的 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')

替换 m 中不需要的字符。

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

迭代 over m 并检查每个字符是否是 in 一个 table 行。

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