2017-08-30 4 views
0

Könnten Sie mir bitte beim Schreiben einer Funktion helfen, die ein Char (dh eine unendliche Zeichenkette) und eine ganzzahlige Drehung erhält. Meine Funktion sollte eine neue Zeichenfolge mit unendlicher Länge zurückgeben, die sich aus dem rotierenden Zeichen nach der Anzahl der Drehorte rechts ergibt. Meine Ausgabe für diesen Code sollte wie folgt sein:Funktion, die einen Text empfängt und rotiert

Type a message: 
Hey, you! 
Rotate by: 
5 
Mjd, dtz! 

Bisher ist das, was ich habe:

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)) 

und dies ist die Fehlermeldung erhalte ich:

TypeError: ord() expected a character, but string of length 9 found on line 3 

Antwort

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 gibt den Unicode-Codepunkt für eine Zeichenfolge mit einem Zeichen zurück. Wenn Sie Ihren Code betrachten, ist der erste Parameter, der an rotate_character übergeben wird, eine Zeichenfolge, deren Länge größer als 1 sein kann.

Verwandte Themen