a变成z,b变成y。abcd在python中变成zyxw…等 def string_transf(): 输入('输入单词或字符串') #字母='abcdefghijklmnopqrstvwxyz' #就我而言,写信: #我+= 如果c>='a'和c

a变成z,b变成y。abcd在python中变成zyxw…等 def string_transf(): 输入('输入单词或字符串') #字母='abcdefghijklmnopqrstvwxyz' #就我而言,写信: #我+= 如果c>='a'和c,python,string,Python,String,,您可以使用以下方法 创建一个描述角色翻译的字典my_map: def string_transf(): input('Enter a word or string') #letters = 'abcdefghijklmnopqrstvwxyz' #for i in letters: #i+= if c >= 'a' and c <='z': i = 'z' - c + 'a' print(i)

,您可以使用以下方法
创建一个描述角色翻译的字典
my_map

def string_transf():
    input('Enter a word or string')
    #letters = 'abcdefghijklmnopqrstvwxyz'
    #for i in letters:
            #i+=

    if c >= 'a' and c <='z':
        i = 'z' - c + 'a'
        print(i)

您还可以使用
translate
方法实现这一点:

import string
ascii_alph = string.ascii_lowercase

my_map = dict(zip(ascii_alph, ascii_alph[::-1]))

str_input = 'abcd'
str_output = ''.join(my_map[c] for c in str_input) # assume every c in my_map

print(str_output) # zyxw

对于一般大小写(ASCII大写和其他字符),您始终可以展开
“我的地图”
字典。


请注意,所描述的方法非常灵活,因为它不仅允许您对字母表的倒装进行翻译。

因为您没有说要处理大写字母,所以这里有一个单行答案:

# my_map = string.maketrans(ascii_alph, ascii_alph[::-1]) # Python 2
my_map = str.maketrans(ascii_alph, ascii_alph[::-1]) # Python 3

str_input = 'abcd'
str_output = str_input.translate(my_map)

print(str_output) # zyxw
其中122是
ord('z')
,97是
ord('a')
ord
函数将字符转换为其Unicode码点,
chr
函数则相反

如果愿意,您可以跳过非小写字符:

>>> ''.join(chr(122 - ord(c) + 97) for c in 'abcd')
'zyxw'
>>''。如果'a'>def inv(c)为c,则在'abcdEFG'中加入(chr(122-ord(c)+97):

…如果“a”提示:使用
ord(…)
chr(…)
。不要使用
&
这是按位and,使用
这是布尔值,很抱歉,这只是一个速写@juanpa.arrivillagai如果你要这样做,你最好使用
str.translate
非常感谢@maximtitarenko我很感激。@macha,很高兴我能帮上忙。@macha谢谢:)。这真的很接近你得到的。您只需要利用
ord
chr
函数,以便Python知道要添加和减去什么。如果您的问题已经解决,请随意将问题标记为已回答!
>>> ''.join(chr(122 - ord(c) + 97) for c in 'abcdEFG' if 'a' <= c <= 'z')
'zyxw'
>>> def inv(c):
...  if 'a' <= c <= 'z':
...   return chr(122 - ord(c) + 97)
...  if 'A' <= c <= 'Z':
...   return chr(90 - ord(c) + 65)
...  return c
... 
>>> ''.join(inv(c) for c in 'Hello world!')
'Svool dliow!'