Hallo,
Bei mir als Anfänger funktionieren bestimmte Dinge, die einzeln bei mir funktionieren, nicht innerhalb einer Schleife.
bei mir klappt folgendes unter python 3.x außerhalb einer Schleife. Ich bekomme die erhofften Ausgaben im Terminal und das Terminal bleibt offen, so das ich die Ausgabe lesen kann.
#!/usr/bin/env python3
print ("Ich bin ein Python Anfänger, jedoch weder Schüler noch Student")
a = 1
b = 2
c = (a) + (b)
print (c)
varialble = input ("Zum Schließen des Terminalfensters, beliebige Taste drücken")
Auch folgende Schleife funktioniert bei mir bestens:
#!/usr/bin/env python3
schleifendurchlaufanzahl = 5
# Schleifenanfang
i = 1
while i <= schleifendurchlaufanzahl :
print(i)
i = i + 1
print ("Ich bin ein Python Anfänger, jedoch weder Schüler noch Student")
print ("")
else:
print ("Die gewünschte Anzahl der Durchläufe wurde erledigt")
print ("")
print ("")
varialble = input ("Zum Schließen des Terminalfensters, beliebige Taste drücken")
Nicht funktionieren tut bei mir die Schleife, wenn ich in diese wie folgt erweitere:
#!/usr/bin/env python3
schleifendurchlaufanzahl = 5
# Schleifenanfang
i = 1
while i <= schleifendurchlaufanzahl :
print(i)
i = i + 1
print ("Ich bin ein Python Anfänger, jedoch weder Schüler noch Student")
print ("")
a = 1
b = 2
c = (a) + (b)
print (c)
else:
print ("Die gewünschte Anzahl der Durchläufe wurde erledigt")
print ("")
print ("")
varialble = input ("Zum Schließen des Terminalfensters, beliebige Taste drücken")
Fehlererscheinung:
* Das Terminalfenster schließt sich ohne das ich schnell genug bin eine Fehlermeldung zu erhaschen.
Es ergeben sich folgende Fragen:
* Wie kann man vor gehen um doch Fehlermeldungen, die bei einem solchen Script vermutlich aus gegeben werden, zu Gesicht zu bekommen ( beim ?
* Was für Regeln sind innerhalb von Schleifen anders als außerhalb ?
c = (a) + (b) klappt bei mir ausserhalb, jedoch nicht innerhalb von Schleife
Leider können wir nur raten, wo der Fehler liegen könnte, denn Du hast Dein Programm nicht in Code-Tags gesetzt. Folge: alle Einrückungen sind verschwunden, ein Python-Programm ohne Einrückungen ist aber für den menschlichen Leser unverständlich. Ich rate trotzdem: wenn die letzte Zeile versehentlich mit eingerückt ist, dann würde genau das passieren, was Du beschreibst. Mit den zusätzlichen Anweisungen innerhalb der Schleife hat das nichts zu tun.
Es gibt noch mehr zu dem Programm zu sagen, aber klären wir besser zuerst die Einrückungsfrage. Die Code-Tags findest Du im vollständigen Editor.
Es gibt noch mehr zu dem Programm zu sagen, aber klären wir besser zuerst die Einrückungsfrage. Die Code-Tags findest Du im vollständigen Editor.
- __blackjack__
- User
- Beiträge: 13107
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Susann.M.23: Zur Fehlererscheinung: Das Fenster schliesst sich nur weil Du das Programm falsch startest. Konsolenprogramme startet man in einer bereits offenen Konsole. Dann braucht man keine komischen Sachen machen um die Konsole offen zu halten, und man kann auch Fehlerausgaben in der Konsole lesen.
Das ``else`` zu einer Schleife macht nur Sinn wenn innerhalb der Schleife ein ``break`` vor kommt. Also lass das ``else`` weg und schreib den Code der in diesem Block steht einfach hinter die Schleife.
Edit: Es ist übrigens ein Einrückungsfehler:
Die Klammern im `a` und `b` sind überflüssig.
Und zwischen Funktion/Methode und der öffnenden Klammer für den Aufruf gehört kein Leerzeichen.
Um eine Leerzeile auszugeben muss man `print()` nichts übergeben.
Der Kommentar „Schleifenanfang“ ist überflüssig.
Und das ist eigentlich ein Fall für eine ``for``-Schleife und `range()`.
Das ``else`` zu einer Schleife macht nur Sinn wenn innerhalb der Schleife ein ``break`` vor kommt. Also lass das ``else`` weg und schreib den Code der in diesem Block steht einfach hinter die Schleife.
Edit: Es ist übrigens ein Einrückungsfehler:
Code: Alles auswählen
$ ./forum16.py
File "./forum16.py", line 14
a = 1
^
IndentationError: unindent does not match any outer indentation level
Und zwischen Funktion/Methode und der öffnenden Klammer für den Aufruf gehört kein Leerzeichen.
Um eine Leerzeile auszugeben muss man `print()` nichts übergeben.
Der Kommentar „Schleifenanfang“ ist überflüssig.
Code: Alles auswählen
#!/usr/bin/env python3
schleifendurchlaufanzahl = 5
i = 1
while i <= schleifendurchlaufanzahl:
print(i)
i = i + 1
print("Ich bin ein Python Anfänger, jedoch weder Schüler noch Student.")
print()
a = 1
b = 2
c = a + b
print(c)
print("Die gewünschte Anzahl der Durchläufe wurde erledigt.")
print()
print()
Zuletzt geändert von __blackjack__ am Montag 30. März 2020, 15:57, insgesamt 1-mal geändert.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Was sind Code Tags ?
Haben Einrückungen irgend welche Auswirkungen in Python auf die Funktion des Codes ?
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Das ist interessant. Werde ich gleich mal probieren wie das geht und was das für eine Wirkung hat.__blackjack__ hat geschrieben: ↑Montag 30. März 2020, 15:51 @Susann.M.23: Zur Fehlererscheinung: Das Fenster schliesst sich nur weil Du das Programm falsch startest. Konsolenprogramme startet man in einer bereits offenen Konsole. Dann braucht man keine komischen Sachen machen um die Konsole offen zu halten, und man kann auch Fehlerausgaben in der Konsole lesen.
- __blackjack__
- User
- Beiträge: 13107
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Susann.M.23: Ja Einrückungen haben eine Bedeutung. Was denkst Du denn woher Python weiss welcher Code in der Schleife steht und welcher davor und danach‽ Alles was gleich tief eingerückt ist, gehört zusammen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Das ist die Variante die ich heraus gefunden habe. Auch hat sie den Vorteil, das man die Datei hierbei per Doppelklick starten kann. Das scheint mir recht intuitiv zu sein.__blackjack__ hat geschrieben: ↑Montag 30. März 2020, 15:51 @Susann.M.23: Zur Fehlererscheinung: Das Fenster schliesst sich nur weil Du das Programm falsch startest. Konsolenprogramme startet man in einer bereits offenen Konsole. Dann braucht man keine komischen Sachen machen um die Konsole offen zu halten, und man kann auch Fehlerausgaben in der Konsole lesen.
Ok. Zu der von Kennern der Materie bevorzugtem Aufruf der .py Datei per Konsole:
* Das ist mir, jetzt wo ich davon Kenntnis erlangt habe, noch nicht gelungen. Was ich gemacht habe ist das ich hierfür in der Konsole folgendes ein gegeben habe:
cd Pfad zur Datei
Enter
Dateiname.py
Aber das finde ich schon noch heraus. Vmtl. gibt es Probleme mit den in dem Pfad enthaltenen Leerzeichen oder Umlauten.
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Hmm. Das war mir nicht bisher nicht bekannt das das eine funktionelle Bedeutung in Python hat.__blackjack__ hat geschrieben: ↑Montag 30. März 2020, 15:58 @Susann.M.23: Ja Einrückungen haben eine Bedeutung. Was denkst Du denn woher Python weiss welcher Code in der Schleife steht und welcher davor und danach‽ Alles was gleich tief eingerückt ist, gehört zusammen.
Was ist eine übliche und für Python geeignete IDE, die vlt. sogar solche Einrückungen irgend wie anbietet ?
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Bisher habe ich irgend einen Texteditor und vlt. auch mal IDLE verwendet. Aber zu wissen das Einrückungen in Python eine funktionelle Bedeutung haben, lässt mich das Thema Editor doch mit anderen Augen sehen.
Mal sehen ob sich da in IDLE was mit Einrückungen konfigurieren lässt oder wie auch immer das gehen mag.
IDLE kann das auch. Magisch geht da eh nix, du musst das schon selbst entscheiden. Aber du kannst zB einen ganzen Ausschnitt von Code markieren, und den dann per tab/shift-tab als ganzes bewegen. Das macht es einfacher. In anderen Sprachen musst du dafuer selbst entscheiden, wo du BEGIN und END schreibst, oder { und }, etc. Das kann einem niemand abnehme.
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
- __blackjack__
- User
- Beiträge: 13107
- Registriert: Samstag 2. Juni 2018, 10:21
- Wohnort: 127.0.0.1
- Kontaktdaten:
@Susann.M.23: Eher nicht. Anfänger nehmen das öfter weil das bei Python dabei ist, aber man will früher oder später auf einen Editor oder eine IDE umsteigen der/die universeller einsetzbar ist als IDLE.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Versuche es mal mit:Susann.M.23 hat geschrieben: ↑Montag 30. März 2020, 16:12
Ok. Zu der von Kennern der Materie bevorzugtem Aufruf der .py Datei per Konsole:
* Das ist mir, jetzt wo ich davon Kenntnis erlangt habe, noch nicht gelungen. Was ich gemacht habe ist das ich hierfür in der Konsole folgendes ein gegeben habe:
cd Pfad zur Datei
Enter
Dateiname.py
python Dateiname.py
Also wirklich das Wort python vor den Dateinamen schreiben. Damit weiß dein Computer, dass du die Datei mit Python starten willst.
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Hallo,
die folgende Schleife funktioniert bei mir sehr gut:
Die Anzahl der Schleifendurchgänge kann man prima über die Variable bestimmen. Ich wage es kaum zu sagen, aber ich komme bisher nicht dahinter, wie man die Schleife so auf bohren könnte, das sie zur derzeitigen Funktionalität, zusätzlich die Möglichkeit bietet, das man sie per Variabel, bei Wunsch auch in einen Endlosschleifenzustand versetzen kann.
Gibt es da z.B. ein für diesen Fall, einsetzbares Endloszeichen ?
die folgende Schleife funktioniert bei mir sehr gut:
Code: Alles auswählen
schleifendurchlaufanzahl = 5
i = 1
while i <= schleifendurchlaufanzahl:
print(i)
i = i + 1
Gibt es da z.B. ein für diesen Fall, einsetzbares Endloszeichen ?
Das ist ein Klassiker: `while True`. Bei Bedarf kann man die Schleife immer noch mit `break` verlassen.Susann.M.23 hat geschrieben: ↑Donnerstag 16. April 2020, 20:17 Gibt es da z.B. ein für diesen Fall, einsetzbares Endloszeichen ?
Man kann das zum Beispiel verwenden wenn man Werte so lange eingeben lassen will, bis sie korrekt sind. Simples Beispiel:
Code: Alles auswählen
while True:
try:
value = int(input('Zahl'))
break
except ValueError:
print('Bitte eine Zahl eingeben.')
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Ich such für folgendes eine Möglichkeit, bei Bedarf auch einen nicht endlichen Wert ein geben zu können, so das die Schleife, sofern im Einzelfall durch den Bediener gewünscht, dauerhaft läuft.
Code: Alles auswählen
schleifendurchlaufanzahl = 5
i = 1
while i <= schleifendurchlaufanzahl:
print(i)
i = i + 1
Das ist keine while-Schleife, sondern eine for-Schleife:
Eine Endlosschleife wird daraus, wenn man statt range itertools.count benutzt:
Wenn Du das jetzt einstellbar willst, mußt Du die beiden Fälle durch if unterscheiden:
Code: Alles auswählen
for i in range(schleifendurchlaufanzahl):
print(i)
Code: Alles auswählen
for i in itertools.count():
print(i)
Code: Alles auswählen
if endlos:
iterator = itertools.count()
else:
iterator = range(schleifendurchlaufanzahl)
for i in iterator:
print(i)
-
- User
- Beiträge: 44
- Registriert: Montag 30. März 2020, 13:23
Was wäre in dem folgenden Beispiel, das gesuchte Zeichen was man, wenn im Einzelfall endloser Lauf gewünscht ist, bei der Variable "schleifendurchlaufanzahl" an gibt ?
Code: Alles auswählen
schleifendurchlaufanzahl =
if endlos:
iterator = itertools.count()
else:
iterator = range(schleifendurchlaufanzahl)
for i in iterator:
print(i)