你能帮我写一个函数,它接收一个字符char(即一个无限长的字符串)和一个整数旋转。我的函数应该返回一个无限长度的新字符串,结果是通过向右旋转的位数旋转char。我对此代码的输出应该是这样的:
Type a message:
Hey, you!
Rotate by:
5
Mjd, dtz!
到目前为止,这就是我所拥有的:
def rotate_character(char, rot):
move = 97 if char.islower() else 65
return chr((ord(char) + rot - move) % 26 + move)
char = input('Type a message: ')
rot = int(input('Rotate by: '))
print(rotate_character(char, rot))
这是我收到的错误消息:
TypeError: ord() expected a character, but string of length 9 found on line 3
答案 0 :(得分:0)
def rotated_ascii(rotate_by):
return ascii_uppercase[rotate_by:] + ascii_uppercase[:rotate_by] + ascii_lowercase[rotate_by:] + ascii_lowercase[:rotate_by]
def rotate_text(t,rotate_by):
tab = str.maketrans(ascii_uppercase + ascii_lowercase,rotated_ascii(rotate_by))
return t.translate(tab)
print(rotate_text("Hey, You!",5))
答案 1 :(得分:0)
def rotate_character(char, rot):
res = ""
for c in char:
if c.isalpha():
move = 97 if c.islower() else 65
res += chr((ord(c) + rot - move) % 26 + move)
else:
res += c
return res
ord返回一个单字符串的Unicode代码点。查看代码,传递给rotate_character的第一个参数是一个长度可能大于1的字符串。