2017-08-30 6 views
0

文字チャート(つまり、無限の長さの文字列)と整数ローテーションを受け取る関数の作成に手伝ってください。私の関数は、無限の長さの新しい文字列を返す必要があります。その結果、文字は回転数の右に回転します。このコードのための私の出力は次のようにする必要があります:テキストを受け取って回転させる関数

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
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)) 
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 1文字の文字列のUnicodeコードポイントを返します。あなたのコードを見ると、rotate_characterに渡す最初のパラメータは、長さが1より大きい文字列です。

関連する問題