2017-01-05 4 views
2

Vielen Dank für alle Antworten. Ich habe verstanden, warum mein Code falsch ist.Um Satz in Python umzukehren

Bitte stellen Sie mir keine Lösungen zur Verfügung, weil ich ein paar habe, aber dann möchte ich verstehen, dass mein Code nicht funktioniert.

Ich denke, es ist wegen while x <= -len(split_result):" aber dann denke ich, die Logik ist richtig. Was ist falsch an meinem Code?

O_string = ("Me name is Mr_T") 
split_result = O_string.split() 
print(split_result) 

x=0 
list=[] 

while x <= -len(split_result): 
    list.append(split_result[x-1]) 
    x = x-1 

result=" ".join(list) 
print (result) 
+2

' '' .join ('Hallo world'.split() [:: - 1]) ' –

+1

Sie überprüfen, ob' x' kleiner oder gleich einem negativen Wert ist, nachdem Sie als'x = 0' initialisiert haben, also Sie werde nie deine 'while' Schleife eingeben – asongtoruin

Antwort

1

können das Reverse-Funktion machen sowie str.join

O_string = ("Me name is Mr_T") 
split_result = O_string.split() 
split_result.reverse() 
print " ".join(split_result) 
0

können Sie versuchen:

>>> O_string = ("Me name is Mr_T") 
>>> O_list = O_string.split() 
>>> O_list.reverse() 
>>> " ".join(O_list) 
'Mr_T is name Me' 
5

Sie eine Liste mit [::-1] umkehren kann:

print(' '.join(O_string.split()[::-1])) 

Ausgabe:

'Mr_T is name Me' 

Hier [::-1] bedeutet mit einer Schrittweite von minus eins alles vom Anfang bis zum Ende nehmen.

Alternativ können Sie die eingebaute in verwenden Funktion reversed:

>>> ' '.join(reversed(O_string.split())) 
'Mr_T is name Me' 

über Ihren Algorithmus. Meiner Meinung nach ist es immer schwieriger, in negativen Indizes zu denken. Ich würde vorschlagen, positiv zu werden:

O_string = ("Me name is Mr_T") 
split_result = O_string.split() 

res = [] 
x = len(split_result) - 1 
while x >= 0: 
    res.append(split_result[x]) 
    x = x-1 

result=" ".join(res) 
print (result) 

Ausgang:

'Mr_T is name Me' 

hier:

x = len(split_result) - 1 

Sie den letzten Index Ihrer Liste gibt. Wir beginnen mit der Indizierung mit 0. Sie müssen also 1 von der Länge der Liste subtrahieren.

Sie es Countdown mit:

x = x-1 

und sobald Sie einen negativen Index erhalten stoppen:

while x >= 0: 

Hinweis: nicht list als Variablennamen anwenden. Es ist ein eingebauter und sollte besser nicht für die Benennung eigener Objekte verwendet werden. Wenn Sie dies tun, können Sie list() nicht mehr (im selben Namespace) verwenden.

0

können Sie umgekehrt benutzen den Satz zu umkehren:

o_string = "Me name is Mr_T" 
words = sentence.split() 
o_string = " ".join(reversed(words)) 
print(o_string) 
1

In Python, list[::-1] wird Ihnen die Liste, in der alle Elemente der Liste in umgekehrter Indexposition gespeichert. dh.) reverseList1=list1[::-1] verwenden Sie dies.

1

Um zu antworten "Was ist falsch an meinem Code?“Lassen Sie uns sehen, was in einer Shell geschieht.

>>> O_string = ("Me name is Mr_T") 
split_result = O_string.split() 
print(split_result) 
['Me', 'name', 'is', 'Mr_T'] 
>>> x=0 
>>> len(split_result) 
4 
>>> -len(split_result) 
-4 
>>> x 
0 
>>> 0 <= 4 
True 
>>> 0 <= -4 
False 
>>> x <= -len(split_result) 
False 
>>> while False: print('this will not get printed') 

Also, Ihre while-Schleife Bedingung wird nie wahr sein und die Schleife wird nie passieren Hier ist ein Beispiel dafür, was funktioniert:

x = -1 
while x >= -len(split_result): 
    list.append(split_result[x]) 
+0

Sage ich setze x = 0 am Anfang, – Alexis

+0

@Alexis gut dann musst du andere Anpassungen vornehmen um zu kompensieren:' x> = -len (split_result) + 1' und 'split_result [ x-1] '. –

Verwandte Themen