[英]How to increment/decrement characters in python in cyclic manner?
我创建了一个函数,我可以在其中根据某些条件递增和递减字符,并且它在“z”之前递增和“a”之后存在的递减字符完全正常工作这是我的工作代码:
str="a b c d e"
Posnew=""
Negnew=""
for i in range(len(str)):
Posnew+=chr(ord(str[i])-i)
Negnew+=chr(ord(str[i])+i)
print(Posnew)
print(Negnew)
但我不知道我应该创建什么逻辑来循环旋转它,这意味着如果我减少“a”那么它应该给出“z”,如果我增加“z”那么它应该给出“a”。
所需的输出类似于如果我将“a”减 2 则它应该返回“y”,或者如果我将“z”增加 5 则它应该返回“e”
提前致谢
以下脚本递增和递减每个字符:
import sys
str="a b c e z" if len(sys.argv) == 1 else ''.join(sys.argv[1:])
Posnew=""
Negnew=""
for i in range(len(str)):
ordstrP = ordstrN = ord(str[i])
ordstri = ordstrP - 97 # 97 == ord('a')
if ordstri in range(26): # 26 == ord('z')-ord('a')+1
ordstrP = ((ordstri + 1) % 26) + 97
ordstrN = ((ordstri + 25) % 26) + 97
Posnew+=chr(ordstrP)
Negnew+=chr(ordstrN)
print('orig:', str)
print('or+1:', Posnew)
print('or-1:', Negnew)
print('-')
Posnew=""
Negnew=""
for i in range(len(str)):
ordstrP = ordstrN = ord(str[i])
ordstri = ordstrP - 97 # 97 == ord('a')
if ordstri in range(26): # 26 == ord('z')-ord('a')+1
ordstrP = ((ordstri + (i % 26)) % 26) + 97
ordstrN = ((ordstri + 26 - (i % 26)) % 26) + 97
Posnew+=chr(ordstrP)
Negnew+=chr(ordstrN)
print('orig:', str)
print('or+i:', Posnew)
print('or-i:', Negnew)
输出: \\SO\\64788535.py
orig: a b c e z
or+1: b c d f a
or-1: z a b d y
-
orig: a b c e z
or+i: a d g k h
or-i: a z y y r
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.