range-Objekte in Python (range-Objekte in Python), lesson, Seite 724582
https://www.purl.org/stefan_ram/pub/range_python (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Python-Kurs

range-Objekte in Python 

Ein range-Objekt repräsentiert einen Bereich ganzzahliger Werten.

range-Aufrufe

»range( first, top, step )« repräsentiert den Bereich ganzzahliger Werte ab einschließlich «first» bis ausschließlich «top» mit einer Schrittweite von «step».

Den exklusiven Endwert »top« nennen wir auch „Deckel “.

range-Objekte sind iterabel, sie liefern die Werte des repräsentierten Bereichs, ohne diese alle schon konkret abzuspeichern (wie es bei einem Tupel mit denselben Werte der Fall wäre).

Ein Tupel kann grundsätzlich aus beliebigen Iterablen initialisiert werden.

Konsolenprotokoll
tuple( range( 0, 10, 3 ))
(0, 3, 6, 9)

Falls «step» negativ ist, ist «top» meist kleiner als «first».

Konsolenprotokoll
tuple( range( 10, 0, -1 ))
(10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
Konsolenprotokoll

r = range( 0, 3, 1 )

next( r )

TypeError: 'range' object is not an iterator

i = iter( r )

next( i )

0
next( i )
1
next( i )
2
next( i )
StopIteration

i = iter( r )

next( i )

0
next( i )
1
next( i )
2
next( i )
StopIteration

Die Kurzform ohne Schrittweite

Werden nur zwei Argumente angegeben, so werden diese als Anfangswert und Deckel angesehen und eine Schrittweite von «1» angenommen.

Konsolenprotokoll
tuple( range( 0, 3 ))
(0, 1, 2)

Die Kurzform ohne Anfangswert

Wird nur ein Argument angegeben, so wird dies als Deckel angesehen. Als Anfangswert wird dann «0» und als Schrittweite wieder «1» angenommen.

Konsolenprotokoll
tuple( range( 3 ))
(0, 1, 2)
Konsolenprotokoll gekürzt, übersetzt und überarbeitet
help( range )
 |  range(stop) -> range-Objekt
| range(start, stop[, step]) -> range-Objekt
|
| Ergibt ein Objekt zurück, das schrittweise eine Folge von ganzen
| Zahlen vom Start (inklusive) bis zum Stopp (exklusive) erzeugt.
| range(i, j) erzeugt i, i+1, i+2, ..., j-1.
| start ist voreingestellt auf 0, und stop wird weggelassen!
| range(4) erzeugt 0, 1, 2, 3. Dies sind genau die gültigen Indizes
| für eine Liste mit 4 Elementen.
| Wenn step angegeben wird, gibt es die Schrittweite an.

Range und Funktoren

Der Funktor »tuple«

Das range-Objekt enthält nur eine Beschreibung eines Bereichs. Sollen alle Werte eines Bereichs wirklich in einem Objekt einzeln vorkommen, so kann aus dem range-Objekt in ein Tupel oder eine Liste gewonnen werden (wie schon oben gezeigt).

Range und Operatoren

Der Operator »in«

»in« zeigt an, ob eine Zahl in einem Bereich enthalten ist.

Konsolenprotokoll
1 in range( 1 )
False
0 in range( 1 )
True

Die Tupelschreibweise und ›range

Konsolenprotokoll

x, y, z = range( 0, 3 )

x

0
y
1
z
2

Übungsfragen

?   Einbeziehung der Null und asymmetrische Intervallangaben °

Wie viele Stunden hat ein Tag und was ist die Bezeichnung (Zeitangabe) der ersten Minute der letzten Stunde eines Tages?

?   Einbeziehung der Null und asymmetrische Intervallangaben (1) °

Was ist das erste und was das letzte Jahr des 21. Jahrhunderts?

?   Einbeziehung der Null und asymmetrische Intervallangaben (2) °

Jemand sagt an einem Dienstag  „Wir sehen uns in acht Tagen!“. An welchem Wochentag findet das Wiedersehen dann statt?

?   Einbeziehung der Null und asymmetrische Intervallangaben (3) °

Wie alt (in Jahren) ist jemand einen Monat nach seiner Geburt? Was würden Sie in die beiden letzten Zeilen des folgenden Formulars einfügen?

Formular
Alter (bitte ausfüllen!):
Jahre: __________
Monate: __________

Übungsaufgaben

/   Übungsaufgabe

Schreiben Sie einen range-Aufruf für einen Bereich, der nur die Zahlen 1, 2 und 3 enthält.

/   Übungsaufgabe

Schreiben Sie einen range-Aufruf für alle ungeraden Zahlen zwischen 10 (einschließlich) und 20 (ausschließlich), also 11, 13, 15, 17 und 19.

/   Übungsaufgabe

Schreiben Sie eine Funktion »f«, die eine Zahl akzeptiert und eine Liste (vom Typ ›list‹) aller Zahlen bis zu dieser Zahl (ausschließlich) ergibt.

Beispiel
f( 5 )
[0, 1, 2, 3, 4]
Beispiel
f( 2 )
[0, 1]
Test

t = lambda: f( 0 )==[] and f( 1 )==[ '0' ]and f( 2 )==[0, 1] and f( 3 )==[0, 1, 2] and type( f( 3 ))= list

t()

True

/   Übungsaufgabe °

Schreiben Sie einen Ausdruck, dessen Auswertung die ganzen Zahlen von 0 (einschließlich) bis 10000 (ausschließlich) ausgibt. Die genaue Formatierung der Ausgabe (Einleitung, Trennung und Abschluß der Zahlen durch weitere Zeichen) ist dabei egal.

/   Übungsaufgabe °

Schreiben Sie eine Funktion »w«, die erkennt, ob ihr Argument eine „Würfelzahl“ (eine der sechs Zahlen «1», «2», «3», «4», «5» oder «6») ist. Hierzu soll geprüft werden, ob das Argument in einem entsprechenden range-Objekt enthalten ist.

Mit „erkennen“ ist oben gemeint, daß die Funktion ›True‹ ergibt, wenn ihr Argument eine „Würfelzahl“ ist, und sonst ›False‹.
Diese Aufgabe ist eine Wiederholung (sie wurde schon einmal behandelt).

 

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram724582 stefan_ram:724582 range-Objekte in Python Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd724582, slrprddef724582, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/range_python