在Python中打印字母表
如何编写python程序,在输出中输入一些字母并输出(字母+n)。范例在Python中打印字母表,python,string,Python,String,如何编写python程序,在输出中输入一些字母并输出(字母+n)。范例 my_string = 'abc' expected_output = 'cde' # n=2 我想到的一种方法是使用str.maketrans,将原始输入映射到(字母+n)。还有别的办法吗 PS:xyz应该翻译成abc 我也试着为这个问题编写自己的代码(除了提到的无限好的答案): 关于如何不转换特殊字符有何评论?谢谢像这样的东西怎么样 >>> my_string = "abc" >>>
my_string = 'abc'
expected_output = 'cde' # n=2
我想到的一种方法是使用str.maketrans
,将原始输入映射到(字母+n)。还有别的办法吗
PS:xyz应该翻译成abc
我也试着为这个问题编写自己的代码(除了提到的无限好的答案):
关于如何不转换特殊字符有何评论?谢谢像这样的东西怎么样
>>> my_string = "abc"
>>> n = 2
>>> "".join([ chr(ord(i) + n) for i in my_string])
'cde'
>>> from string import ascii_lowercase
>>> lower = ascii_lowercase
>>> input = "xyz"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'zab'
>>> input = "abc"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'cde'
注意如评论中所述,当遇到边缘情况如xyz
编辑要处理边缘案例,可以编写如下内容
>>> my_string = "abc"
>>> n = 2
>>> "".join([ chr(ord(i) + n) for i in my_string])
'cde'
>>> from string import ascii_lowercase
>>> lower = ascii_lowercase
>>> input = "xyz"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'zab'
>>> input = "abc"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'cde'
像这样的怎么样
>>> my_string = "abc"
>>> n = 2
>>> "".join([ chr(ord(i) + n) for i in my_string])
'cde'
>>> from string import ascii_lowercase
>>> lower = ascii_lowercase
>>> input = "xyz"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'zab'
>>> input = "abc"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'cde'
注意如评论中所述,当遇到边缘情况如xyz
编辑要处理边缘案例,可以编写如下内容
>>> my_string = "abc"
>>> n = 2
>>> "".join([ chr(ord(i) + n) for i in my_string])
'cde'
>>> from string import ascii_lowercase
>>> lower = ascii_lowercase
>>> input = "xyz"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'zab'
>>> input = "abc"
>>> "".join([ lower[(lower.index(i)+2)%26] for i in input ])
'cde'
如果你不在乎包装,你可以:
def shiftString(string, number):
return "".join(map(lambda x: chr(ord(x)+number),string))
如果您确实希望环绕(想想Caesar chiffre),则需要指定字母表开始和结束的位置的开始和结束:
def shiftString(string, number, start=97, num_of_symbols=26):
return "".join(map(lambda x: chr(((ord(x)+number-start) %
num_of_symbols)+start) if start <= ord(x) <= start+num_of_symbols
else x,string))
def shiftString(字符串、数字、开始=97、符号数=26):
返回“”。连接(映射(lambda x:chr)((ord(x)+数字开始)%
num_of_symbols)+start)如果开始如果您不关心环绕,您可以执行以下操作:
def shiftString(string, number):
return "".join(map(lambda x: chr(ord(x)+number),string))
如果您确实希望环绕(想想Caesar chiffre),则需要指定字母表开始和结束的位置的开始和结束:
def shiftString(string, number, start=97, num_of_symbols=26):
return "".join(map(lambda x: chr(((ord(x)+number-start) %
num_of_symbols)+start) if start <= ord(x) <= start+num_of_symbols
else x,string))
def shiftString(字符串、数字、开始=97、符号数=26):
返回“”。连接(映射(lambda x:chr)((ord(x)+数字开始)%
num_of_symbols)+start)如果start我对代码做了以下更改:
number = 2
prim = """Special() ops() chars!!"""
final = prim.lower()
for x in final:
if(x =="y"):
print("a", end="")
elif(x=="z"):
print("b", end="")
elif (ord(x) in range(97, 124)):
conv = ord(x)
x = conv+number
print(chr(x),end="")
else:
print(x, end="")
**Output**: urgekcn() qru() ejctu!!
我对代码做了以下更改:
number = 2
prim = """Special() ops() chars!!"""
final = prim.lower()
for x in final:
if(x =="y"):
print("a", end="")
elif(x=="z"):
print("b", end="")
elif (ord(x) in range(97, 124)):
conv = ord(x)
x = conv+number
print(chr(x),end="")
else:
print(x, end="")
**Output**: urgekcn() qru() ejctu!!
你的字母表是什么?小写ASCII字母?你想让它环绕吗?是的,小写字母,但这不是我可以使用的问题。小写/大写。我想打印由n推进的输入字母表。不确定“你想让它环绕吗?”z
shift=2应该输出什么?所有字符都是有效的ascii吗?你想让y和z分别变成a和b吗?是的,xyz,应该转换成abc。这就是问题。你的字母表是什么?小写ascii字母?你想让它环绕吗?是的,小写字母表,但这不是我可以使用的问题。小写/大写。我想要to打印由n推进的输入字母表。不确定您所说的“您希望它环绕吗?”z
shift=2应该输出什么?所有字符都是有效的ascii码吗?你想让y和z分别变成a和b吗?是的,xyz应该转换成abc。这就是xyz
的问题所在?@BhargavRao实际上,它不会t@inspectorG4dgetOp没有规定转换应该是循环的。如果需要的话这不会work@vaultah是的。忘了这个例子不一样。我的错!无论如何,OP应该将变量名从input
更改为其他名称,因为input
是内置的func@inspectorG4dget使用列表的不整洁解决方案。我不确定pythonic的方法:/xyz发生了什么事?@BhargavRao实际上,它不会t@inspectorG4dgetOp没有规定转换应该是循环的。如果这是必需的,那么就不需要了work@vaultah是的。忘了这个例子不一样。我的错!无论如何,OP应该将变量名从input
更改为其他名称,因为input
是内置的func@inspectorG4dget使用list.Am的不整洁解决方案不确定使用Python的方法:对于这个解决方案,它也有一种处理空白空间的方法。它现在用“p”替换空格。正如我所说的,你不想替换这个范围之外的任何东西。但是给我一个第二个DOK,现在应该只考虑小写字母(默认情况下)。对于这个解决方案,它也有一种处理空白空间的方法。它现在用“p”替换空格。正如我所说的,你不想替换这个范围之外的任何东西。但是给我一个第二步,现在只考虑小写字母(默认情况下)。