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

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
matheblauwal
User
Beiträge: 9
Registriert: Montag 4. März 2013, 19:54
Wohnort: 53639 Königswinter

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.
Real Programmers don't comment their code. It was hard to write, it should be hard to understand.
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.
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

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.
Zuletzt geändert von Gary123456 am Freitag 15. März 2013, 21:46, insgesamt 1-mal geändert.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Entschuldige, dass waren noch die alten Begriffe in meiner alten Programmiersprache.
matheblauwal
User
Beiträge: 9
Registriert: Montag 4. März 2013, 19:54
Wohnort: 53639 Königswinter

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
Real Programmers don't comment their code. It was hard to write, it should be hard to understand.
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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