我最近一直在做一个小项目,但我遇到了一个问题,我被困在了。我已经检查了各个地方,但我真的找不到我想要的东西。这是我的代码:
special_alphabet = [a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u,
v, w, x, y, z]
alphabet = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k','l', 'm', 'n',
'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
name = input('Please insert your name: ')
item_alphabet = -1
item_special_alphabet = -1
index = -1
for item in name:
item_alphabet = item_alphabet + 1
item_special_alphabet = item_special_alphabet + 1
index = index + 1
if alphabet[item_alphabet] == name[index]:
print(special_alphabet[item_special_alphabet])
special_alphabet
列表包含变量中的特殊字符。我没有展示它们,因为它们太长了,但它们就在那里。
我现在遇到的问题是,当我运行此代码并输入我的输入时,它确实检查了我插入的'name'(字符串),它只按列表的顺序执行(字母表基本上)。因此,当我输入:Amine
时,它只返回A的特殊字符(因为它是字符串和列表中的第一个(0))和E(同样的原因,只是它的第五个。)
我正在寻找的是如何让它在没有任何顺序的情况下浏览整个列表,并在运行if
语句并打印出特殊字符之前检查其中的所有项目。
提前谢谢。
答案 0 :(得分:1)
您可以使用str.maketrans()
和str.translate()
来完成这些类型的翻译工作:
trans_tab = str.maketrans(dict(zip(alphabet, special_alphabet)))
name = input('Please insert your name: ')
translated_name = name.translate(trans_tab)
print(translated_name)
如果您将str.maketrans()
一个字典参数(包含长度为1的字符串作为键和任意长度字符串作为值)传递给它,它将构建一个可与str.translate()
一起使用的转换表,从而创建一个字符串的新副本,其中每个字符已通过给定的转换表进行映射。
例如:
In [15]: trans = str.maketrans({
...: 'A': 'A ',
...: 'm': 'M ',
...: 'i': 'I ',
...: 'n': 'N ',
...: 'e': 'E '
...: })
In [16]: input("> ").translate(trans)
> Amine
Out[16]: 'A M I N E '
答案 1 :(得分:0)
dictionary
字母和空格字母可能是最佳设计
在您的情况下尝试;
for item in name:
ind = alphabet.find(item)
if ind != -1:
print(special_alphabet[ind])