2017-01-03 5 views

Antwort

1
def possible_rotation(): 
    a = "abc" 
    b = len(a) 
    for i in range (b): 
     c = a[i:]+a[:i] 
     print c 


possible_rotation() 

Ausgang:

abc bca cab

Sie haben 2 issues.The Bereich Ausgabe und die Rotation logic.it sollte a[i:]+a[:i] nicht andersrum round.For Bereich range(b-1) should be range(b)

+0

Danke für das Aufzeigen! –

2

Sie haben zwei Fehler:

  • range(b-1)range(b) sein sollte;
  • a[:i] + a[i:] sollte a[i:] + a[:i] sein.
0
for i in range(b): 
    print(a[i:] + a[:i]) 

0 - [a,b,c] + [] 
1 - [b,c] + [a] 
2 - [c ] + [a,b] 
sein

tauschen Sie die Listen aus

-1

Zwei Dinge:

Erstens, wie bereits in den Kommentaren hervorgehoben, sollten Sie über range(b) anstelle von range(b-1) iterieren. Im Allgemeinen ist range(b) gleich [0, 1, ..., b-1], in Ihrem Beispiel also [0, 1, 2].

Zweitens haben Sie die beiden Begriffe umgeschalten, sollte es sein: a[i:] + a[:i].

-1

Keine Notwendigkeit, (b-1) zu tun, Sie tun es einfach durch:

def possible_rotation(): 
    a = "abc" 
    for i in range(0,len(a)): 
     strng = a[i:]+a[:i] 
     print strng 
possible_rotation() 

`

-1

Das sieht Hausaufgaben sein, aber hier ist eine Lösung, die die eingebaute in collections.deque mit:

from collections import deque 

def possible_rotations(string): 
    rotated = deque(string) 
    joined = None 
    while joined != string: 
     rotated.rotate(1) 
     joined = ''.join(x for x in rotated) 
     print(joined) 

Testen sie es aus:

>>> print(possible_rotations('abc')) 
cab 
bca 
abc 
0

Das habe ich gemacht. Ich benutzte einen deque, A-Klasse in einer Sammlung und verwendet dann die Drehfunktion wie diese

from collections import deque 

string = 'abc' 

for i in range(len(string)): 
    c = deque(string) 
    c.rotate(i) 
    print ''.join(list(c)) 

Und gibt mir diese Ausgabe.

abc 
cab 
bca 

Was es tut. Es erzeugt ein deque Objekt, ein doppelendiges Warteschlangenobjekt, das eine Methode rotieren kann, rotieren die Anzahl der zu drehenden Schritte und gibt die nach rechts verschobenen Objekte mit der Anzahl der Schritte wie rshift in binären Operationen zurück. Durch die loops verschiebt es ein Deque-Objekt, das ich in list und schließlich in einen String umwandele. Hoffe, das hilft

Verwandte Themen