我目前正在编写一个代码,将一个单词中的每个字母向上移动一个字母,例如:Abc变为Bcd(第一个字母始终为大写),但是每当我在单词中输入z时,它就会变成{或[(如果是大写字母)。例如,如果我输入zoo,则输出为“ [pp]”,我希望z变为a。到目前为止,我已经尝试过:
word = input("Insert Word:")
word = word.capitalize().replace(" ", "")
for shift in word:
incrypt = chr(ord(shift)+1)
Last_char= incrypt[-1]
if Last_char > chr(123):
Last_char = [chr(97)]
print (incrypt, end='')
elif Last_char == chr(91):
Last_char = [chr(65)]
print (incrypt, end='')
我也尝试过使用如下if语句:
{{1}}
但这没用。
答案 0 :(得分:0)
以下是使用join的解决方案:
word = word.lower()
"".join(chr(ord('a') + (ord(w)-ord('a')+1)%26) for w in word).capitalize()
答案 1 :(得分:0)
我会这样做:
word = input("Insert Word:")
word = word.capitalize().replace(" ", "")
A,Z = ord('A'), ord('Z')
a,z = ord('a'), ord('z')
step = 1
for shift in word:
new_char = ord(shift) + step
incrypt = None
if 'a' <= shift <= 'z':
incrypt = chr(new_char) if new_char <= z else chr(a + (new_char - z - 1)%26 )
elif 'A' <= shift <= 'Z':
incrypt = chr(new_char) if new_char <= Z else chr(A + (new_char - Z - 1)%26 )
else :
incrypt = shift
print (incrypt, end='')