因此,我们有两个列表,a
仅包含字母字符,而b
是用户对列表的输入。我正在尝试针对b
中的索引更改a
中的字母字符,而不更改用户输入中的非字母字符。
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"]
a=input("Please enter a string: ")
b=list(a)
f=[]
for elem in b:
if elem in alphabet:
c=alphabet.index(elem)
d=(len(alphabet)-c)
e=alphabet[d-1]
f.append(e)
mystring=''.join(f)
print(mystring)
我希望abc123的输出为zyx123
答案 0 :(得分:2)
当elem
不在字母中时,您只是错过了else语句
if elem in alphabet:
...
else:
f.append(elem)
答案 1 :(得分:1)
考虑使用maketrans
和str.translate
似乎与您正在做的事情非常匹配的东西:
intab = "abcdefghijklmnopqrstuvwxyz"
outtab = intab[::-1]
trantab = str.maketrans(intab, outtab)
str = "abc123";
print (str.translate(trantab))
>> zyx123
在上面,outtab
变量只是使用python切片语法[::-1]
的intab变量(以相反的顺序)
Maketrans将一个列表中的所有字符转换为另一列表中位置相等的字符。不在第一个列表中的任何字符都将保留。