我有这段代码:
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
造成这种情况的原因是什么?其他几个文本示例都有错误,但不是全部。我的逻辑有问题吗?
答案 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