Seite 1 von 1

Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 19:43
von matheblauwal
Ich habe ein paar Fragen zu Berechnungen in Python, weil ich in Beispiel-Skripts im Internet solche Ausdrücke gefunden habe:

Code: Alles auswählen

x = 1 << 8
y = 1 >> 8
if string == string[::-1]:
    print("Der String ist ein Palindrom")
Es wäre nett wenn ihr mir erklären könntet was diese Ausdrücke bedeuten und wofür man sie benutzen kann.

Re: Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 19:58
von BlackJack
@matheblauwal: ``<<`` und ``>>`` kannst Du in der Python-Dokumentation nachschlagen. Da kommt man am besten über den Index zu den passenden Stellen. Der Link ist fast auf jeder Seite oben rechts.

Was der andere Ausdruck macht kannst Du einfach selber heraus finden. In der Dokumentation steht was zur Slice-Syntax und ansonsten kannst Du es einfach mal ausprobieren und nachlesen was ein Palindrom ist.

Re: Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 20:03
von Gary123456
Hi,

Was <<, >> bedeutet siehe http://openbook.galileocomputing.de/pyt ... c414bc872b


Nun zu dem:

Code: Alles auswählen

if string == string[::-1]:
1. Der Variable string muss ein Wert zugewiesen werden.
2. Schau Dir dieses Beispiel an:

Code: Alles auswählen

name = "ytnoM Python"
print(name[4::-1])
print(name[::-1])
Erklärung aus meinem Buch (so verstehst Du es wol am Besten):
Bei neg. Schrittweiten vertauschen sich Anfang und Ende der Sequenz. Deshalb wird in diesem Beispiel name[4::-1] nicht alles vom vierten bis zum letzten Zeichen, sondern der Teil vom 4. bis zum 1. Zeichen ausgelesen.
Das bedeutet für Dein Beispeil, dass alle Zeichen von rechts nach links gelesen werden. Nehmen wir ein Beispiel an Deinem Username:

Code: Alles auswählen

string="lawualbehtam"
print(string[::-1])
Ausgabe wäre Dein Username.

Was if und print bedeutet, hoffe ich doch, hast Du verstanden.

Re: Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 21:41
von Leonidas
Gary123456 hat geschrieben:

Code: Alles auswählen

if string == string[::-1]:
1. Es muss string deklariert sein, sprich der Variable string einen Wert zugewiesen werden. Sonst kommt verständlicherweise eine Fehlermeldung
Das muss gar kein String sein, sondern irgendetwas was Indexoperationen erlaubt, wie auch eine Liste (daher ist auch "string" kein guter Name). Außerdem deklariert man in Python nichts.

Re: Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 21:46
von Gary123456
Entschuldige, dass waren noch die alten Begriffe in meiner alten Programmiersprache.

Re: Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 22:26
von matheblauwal
Danke für all die Antworten!
Das mit der Bitverschiebung hab ich erst verstanden als ich selbst so etwas ausprobiert habe:

Code: Alles auswählen

bin(12)
bin(12 >> 1)
Und auch das string[::-1] habe ich jetzt verstanden (@Gary123456 der Name string sollte verdeutlichen, dass hier ein x-beliebiger String gemeint ist). Das vor dem :: ist die Stelle an dem die Zählung beginnt und das danach sagt um wieviele Schritt man jeweils geht.

Was mich aber jetzt noch interessieren würde ist wofür man den Operater << (bzw. >>) braucht

Re: Was bedeutet <<, >>, S[::-1] ?

Verfasst: Freitag 15. März 2013, 22:38
von cofi
https://en.wikipedia.org/wiki/Bit_twiddling

Weil die Seite noch ein bisschen duerftig an Anwendungsfaellen ist: Crypto, Binaerformate und generell alles bei dem man direkt auf Bits oder mit Bitmustern arbeitet (sinnvollerweise dann aber mit Hex- oder Binaerliteralen und nicht mit Dezimalliteralen).