6
votes

Inverser les caractères de chaîne tout en les gardant dans la même position

Je cherche à inverser un ensemble de chaînes tout en les gardant dans les mêmes positions et en essayant également de ne pas utiliser le découpage ou l'inversion () . Donc, si j'avais:

gnirts a si sihT      # correct reverse, wrong positions

En utilisant la fonction inverse, cela renverrait:

def Reverse(string):
   length = len(string)
   emp = ""
   for i in range(length-1,-1,-1):
       emp += length[i]
   return emp

J'ai créé une fonction qui fait tout correctement sauf pour positionnement:

'sihT si eht gnirts'

qui renvoie;

string = 'This is the string'

Comment puis-je remettre cette chaîne inversée aux bonnes positions? p>


1 commentaires

Juste une suggestion, pour être pythonique, vous ne devez pas mettre en majuscule les noms de vos fonctions. La convention consiste à mettre en majuscule les noms de classe et les noms de fonctions minuscules / snake_case.


4 Réponses :


6
votes

Je suppose que vous voulez:

sihT si eht gnirts

Donne:

string = 'This is the string'

def Reverse(string):
    return ' '.join([s[::-1] for s in string.split(' ')])

print(Reverse(string))

~


2 commentaires

J'essaye de ne pas utiliser le tranchage ou l'inverse


Merci pour la réponse, dans 99% des cas, c'est une réponse plus qu'acceptable



2
votes
sihT si eht gnirts

0 commentaires

1
votes

Voici une autre façon d'utiliser deux boucles for et str.split():

sihT si eht gnirts

Ou mieux:

def reverse_pos(string):
    for elm in string.split():
        k = ''  # temporar string that holds the reversed strings
        for j in elm:
            k = j + k
        yield k


string = 'This is the string'
print(' '.join(reverse_pos(string)))

Output:

def reverse_pos(string):
    a = ''
    splitted = string.split()
    length = len(splitted)
    for i, elm in enumerate(splitted):
        k = ''  # temporar string that holds the reversed strings
        for j in elm:
            k = j + k
        a += k
        # Check to add a space to the reversed string or not
        if i < length - 1:
            a += ' '
    return a


string = 'This is the string'
print(reverse_pos(string))

NB: L'idée principale ici est scindée par des espaces et inverser chaque élmement. Cela inversera et conservera les mots à leur place dans la chaîne principale.


0 commentaires

0
votes

Rien de très différent de ce qui a été publié jusqu'à présent:

string = "This is the string"
string_reversed = " ".join(["".join(reversed(word)) for word in string.split()])
print(string_reversed)

modifier Il suffit de relire le message original, désolé.


0 commentaires