Seite 1 von 1

Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 17:53
von Kanda
[codebox=java file=Unbenannt.java]for(int i=0;i<15;i++){
System.out.println("Text");
}[/code]

Hallo,
ich komme von Java, wie wird so etwas direkt in Python umgesetzt? Die Idee mit "for Variable in Sequenz" finde ich ganz schön kompliziert.
Wie würde man so eine For-Schleife direkt umsetzen?
Oder würde man das in Python so lösen?

[codebox=pycon file=Unbenannt.txt]i=0
while i<15:
i=i+1
print("Text")
[/code]

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 18:31
von BlackJack
@Kanda: Es ist ``for variable in iterable:``, das muss kein Sequenztyp sein. Man würde das Tutorial in der Python-Dokumentation durcharbeiten und sehen wie man ein iterierbares Objekt erstellt, das einem die Zahlen liefert. Beziehungsweise so viele Elemente wie man für die Wiederholungen braucht, denn `i` wird in dem Beispiel ja nicht verwendet.

Du solltest übrigens nicht einfach direkt von Java nach Python umsetzen wollen, denn Python ist nicht Java. Sachen 1:1 aus einer Sprache in eine andere übernehmen zu wollen geht meistens schief und führt nicht zu idiomatischem Code. Ausser die Sprachen sind sich wirklich sehr ähnlich, was man von Java und Python nicht sagen kann.

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 19:19
von noisefloor
Hallo,
Die Idee mit "for Variable in Sequenz"
In Python arbeitet man sehr sehr oft mit Iteration - wenn du dich damit nicht anfreunden kannst dann a) solltest du das am besten ändern oder b) die Finger von Python lassen :-)

Gruß, noisefloor

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 19:41
von DasIch
Wenn du eine while Schleife (in Python Code) siehst oder dabei bist eine zu Schreiben, bist du wahrscheinlich dabei einen Fehler zu machen. Wenn du in so eine Situation kommt, immer einen Moment innehalten und überlegen was du da gerade eigentlich tust.

Je nach Programmiersprache gilt dies sogar für jede Form von Schleifen oder Rekursion.

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 19:47
von Sirius3
@DasIch: while-Schleifen an sich sind noch kein Fehler. Wenn man dagegen eine Schleife hat, wo man händisch einen Index hochzählt oder überhaupt einen Index benutzt, sollte man sich überlegen, ob sich das nicht auf andere Art lösen läßt.

Code: Alles auswählen

for text in itertools.repeat("Text", 15):
  print(text)

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 20:45
von BlackJack
Das lässt sich auch ganz nett in Java ”zurück übersetzen”:
[codebox=java5 file=Unbenannt.java]import java.io.IOException;
import java.util.stream.Stream;

public class Main {
public static void main(String[] args) throws IOException {
Stream.generate(() -> "Test").limit(15).forEach(System.out::println);
}
}[/code]

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 20:46
von S0S
Ich kann kein Java, aber nach meinem Gefühl sieht der Python-Code recht ähnlich aus:

Code: Alles auswählen

for i in range(15):
    print "Text"

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 21:09
von BlackJack
@S0S: Da solltest Du ein `xrange()` draus machen, sonst wird da tatsächlich eine Liste mit 15 Werten erstellt die kein Mensch braucht. :-)

In Java wäre Deins mit Python 2 `range()` eher das hier:
[codebox=java5 file=Unbenannt.java]import java.io.IOException;
import java.util.Collections;

public class Main {
public static void main(String[] args) throws IOException {
Collections.nCopies(15, "Test").forEach(System.out::println);
}
}[/code]

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Montag 12. September 2016, 22:25
von DasIch
Sirius3 hat geschrieben:@DasIch: while-Schleifen an sich sind noch kein Fehler.
Hab ich auch nicht behauptet, ich habe geschrieben man macht wahrscheinlich einen Fehler. Eine while-Schleife impliziert State und da State unschön ist sind es damit while-Schleifen auch.

Das heisst nicht dass man while Schleifen nie benutzen sollte oder dass man immer einen Fehler macht, wenn man sie benutzt aber erfahrungsgemäß gibt es fast immer eine bessere Lösung, die weniger fehleranfällig ist, den Vorgang besser beschreibt und damit lesbarer ist.

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Dienstag 13. September 2016, 06:54
von noisefloor
Hallo,

wenn ich 15x `Text` ausgeben wollte, dann würde ich das ja so machen:

Code: Alles auswählen

print('Text\n'*15)
Gruß, noisefloor

Re: Wie würde eine For-Schleife so in Python geschrieben werden?

Verfasst: Dienstag 13. September 2016, 07:09
von Sirius3
@BlackJack: Dein Java nach Python rückrückübersetzt wäre ja eher:

Code: Alles auswählen

for text in ["Text"] * 15:
    print text
Die Variante mit xrange sähe in Java dagegen so aus:
[codebox=java file=Unbenannt.java]
import java.io.IOException;
import java.util.stream.IntStream;

public class Main {
public static void main(String[] args) throws IOException {
IntStream.range(0, 15).forEach(i -> System.out.println("Text"));
}
}
[/code]