繁体   English   中英

如何以循环方式增加/减少python中的字符?

[英]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”

提前致谢

以下脚本递增递减每个字符:

  • 1 最初用于培训和说明目的,然后
  • 通过 i(即通过它在输入字符串中的位置):

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM