Hallo,
Habe mich extra hier angemeldet da ich ein wenig Hilfe bezüglich im Titel genanntem Problem brauche.
Es sieht momentan so aus, das der Benutzer nacheinander 2 eingaben macht und am Ende gibt es ein Ergebnis.
Jetzt möchte ich das man danach durch die Eingabe von "Ende" das Programm sauber beendet und es bei der Eingabe von "Neu" nochmal Durchläuft.
In einem Anderem Forum wurde ich jetzt schon auf die Idee gebracht, das man das ganze Programm in eine while schleife steckt. Allerdings bin ich mit nicht sicher wie ich das umsetzen soll. Vielleicht hat hier ja noch jemand eine andere Idee.
Ich bedanke mich schon mal im Voraus für eure Hilfe.
Python 3.2 Programm Beenden/Neuer Durchlauf
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Ich habe gerade ein Brett vor dem Kopf und weiß einfach nicht wie ich das umsetzen soll.
Idee ist:
Wie man sieht ein ganz simples Problem, aber ich komme dank oben genanntem Brett leider nicht darauf wie man es löst...
Idee ist:
Code: Alles auswählen
wiederholen = 1
while wiederholen == 1:
# Das Programm
print("'Ende' eingeben um zu beenden, oder 'Neu' für einen neuen Durchlauf.")
# Hier würde ich dann die Variable "wiederholen" durch eingabe von "Ende" auf 0 ändern und sagen sagen das bei "wiederholen == 0" das Programm beendet werden soll. Nur komm ich nicht drauf wie ich das am besten anstelle.
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Das ich den input befehl benutzen muss weiß ich. Ich weiß allerdings nicht wie, bin schon die ganze zeit am herumexperimentieren aber komme nicht auf die Lösung.
Und ich hab noch ein zweites problem.
Bei letzterem bekomme ich die fehlermeldung:
Traceback (most recent call last):
File "D:\Python32\programm.py", line 5, in <module>
wiederholen = true
NameError: name 'true' is not defined
Ist das normal? Oder was mache ich da falsch?
Und ich hab noch ein zweites problem.
Code: Alles auswählen
# Funktioniert:
wiederholen = 1
while wiederholen == 1:
wiederholen = "true"
while wiederholen == "true":
# Funktioniert nicht:
wiederholen = true
while wiederholen == true:
Traceback (most recent call last):
File "D:\Python32\programm.py", line 5, in <module>
wiederholen = true
NameError: name 'true' is not defined
Ist das normal? Oder was mache ich da falsch?
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Vergleich nochmal deinen und meinen Post und achte vielleicht auch auf die Farben.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Ah ok habs verstanden. True und False sind in Python feste werte, wohingegen "True" und "False" Variablen sind.
Aber warum müssen den Variablen aus Buchstaben in Anführungsstriche gesetzt werden und Zahlen nicht?
Jetzt bleibt nur noch meine Schleifen Problem
.
Aber warum müssen den Variablen aus Buchstaben in Anführungsstriche gesetzt werden und Zahlen nicht?
Jetzt bleibt nur noch meine Schleifen Problem
-
BlackJack
@Lemiewings: "True" und "False" (mit Anführungsstrichen) sind keine Variablen sondern literale Zeichenketten. Ohne die Anführungsstriche sind es dagegen Namen. Diese beiden Namen sind ein wenig spezieller als viele andere Namen, da man sie nicht an andere Werte binden kann, damit niemand Wahr und Falsch umdefinieren kann. (In älteren Python-Versionen ging das mal, da waren es ganz normale Namen.)
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Nein, du ziehst die falschen Schluesse.
Boolsche Werte gibt es in Python als `True` und `False`, `"True"` und `"False"` sind nichts anderes als normale Zeichenketten:
Alle vier Werte sind keine Variablen. Bei `false = False` ist `false` eine Variable, in Python Jargon ein Name, und das laesst auch `false = True` zu.
Edit: Zu spaet.
Boolsche Werte gibt es in Python als `True` und `False`, `"True"` und `"False"` sind nichts anderes als normale Zeichenketten:
Code: Alles auswählen
In [3]: bool(True), bool(False), bool("False"), bool("True")
Out[3]: (True, False, True, True)Edit: Zu spaet.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
True schreibt sich groß. True ist nur ein Name für eine Instanz der Klasse bool. Wenn du lustig bist, kannst du den Namen True an ein anderes Objekt binden.
"True" und "False" sind Zeichenketten. Zeichenketten sind dann wahr, wenn sie nicht leer sind. Also sind sowohl "True" als auch "False", hingegen nicht "".
Edit: noch mehr zu spät
"True" und "False" sind Zeichenketten. Zeichenketten sind dann wahr, wenn sie nicht leer sind. Also sind sowohl "True" als auch "False", hingegen nicht "".
Edit: noch mehr zu spät
[url=http://wiki.python-forum.de/PEP%208%20%28%C3%9Cbersetzung%29]PEP 8[/url] - Quak!
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
[url=http://tutorial.pocoo.org/index.html]Tutorial in Deutsch[/url]
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Ok wieder was gelernt. Vielen Dank dafür.
Edit: Jetzt stellt sich mir aber immer noch die Frage, wie man durch eine Benutzereingabe den wert der Variable "wiederholen = True" zu "wiederholen = False" verändert.
Habe schon eine ganz weile gegoogelt und herumprobiert, aber ich scheine an den falschen stellen zu suchen.
Edit: Jetzt stellt sich mir aber immer noch die Frage, wie man durch eine Benutzereingabe den wert der Variable "wiederholen = True" zu "wiederholen = False" verändert.
Habe schon eine ganz weile gegoogelt und herumprobiert, aber ich scheine an den falschen stellen zu suchen.
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Ich weiß Doppelposts sind verpönt, aber meine eigentliche Frage wurde leider noch nicht beantwortet und der Thread scheint sonst keine Beachtung mehr zu bekommen.
Wie muss ich es anstellen das durch eine Benutzereingabe eine Variable geändert wird?
Also z.B. durch Eingabe von "Ende" die Variable "wiederholen = True" zu "wiederholen = False" geändert wird.
Das ich den input() Befehl dazu brauche weiß ich, aber ich weiß nicht wie ich das damit anstelle.
Habe schon viel herumprobiert und gegoogelt aber ich komme einfach nicht auf die Lösung.
Wäre wirklich nett wenn ihr mir da nochmal auf die Sprünge helfen könntet.
Wie muss ich es anstellen das durch eine Benutzereingabe eine Variable geändert wird?
Also z.B. durch Eingabe von "Ende" die Variable "wiederholen = True" zu "wiederholen = False" geändert wird.
Das ich den input() Befehl dazu brauche weiß ich, aber ich weiß nicht wie ich das damit anstelle.
Habe schon viel herumprobiert und gegoogelt aber ich komme einfach nicht auf die Lösung.
Wäre wirklich nett wenn ihr mir da nochmal auf die Sprünge helfen könntet.
BlackJack hat geschrieben:@Lemiewings: "True" und "False" (mit Anführungsstrichen) sind keine Variablen sondern literale Zeichenketten. Ohne die Anführungsstriche sind es dagegen Namen. Diese beiden Namen sind ein wenig spezieller als viele andere Namen, da man sie nicht an andere Werte binden kann, damit niemand Wahr und Falsch umdefinieren kann. (In älteren Python-Versionen ging das mal, da waren es ganz normale Namen.)
Code: Alles auswählen
Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24)
[GCC 4.5.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> False = 'spam'
>>> 'ham' == False
False
>>> 'spam' == False
True-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Code: Alles auswählen
wiederholen = True
while wiederholen == True:
# Das Programm
print("'Ende' eingeben um zu beenden, oder 'Neu' für einen neuen Durchlauf.")
# Hier möchte ich dann "wiederholen = True" zu "wiederholen = False" ändern in dem man "Ende" eingibt.- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Code: Alles auswählen
repeat = True
while repeat:
answer = input('"End" to abort: ')
repeat = answer != 'End'Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Ok das Funktioniert schon mal
. Das würde ich gerne noch so erweitern, das alle Varianten von Ende Akzeptiert werden (Ende, ende, eNde...ect.) und das ganze mit dem exit() befehl verbinden.
Außerdem würde ich es gerne so machen, das das Programm nur von vorn anfängt wenn man "Neu" eingibt.
Bis hierhin fiel mir eigtl. alles ziemlich leicht, aber komischerweise fühle ich momentan so als hätt ich ein Brett vorn Kopf genagelt und komme von alleine auf keine Lösung mehr :K .
Außerdem würde ich es gerne so machen, das das Programm nur von vorn anfängt wenn man "Neu" eingibt.
Bis hierhin fiel mir eigtl. alles ziemlich leicht, aber komischerweise fühle ich momentan so als hätt ich ein Brett vorn Kopf genagelt und komme von alleine auf keine Lösung mehr :K .
- cofi
- Python-Forum Veteran
- Beiträge: 4432
- Registriert: Sonntag 30. März 2008, 04:16
- Wohnort: RGFybXN0YWR0
Also das Programm soll abbrechen, wenn es `ende' liest, aber auch wenn es nicht `neu' liest? Warum beides? Das ist genau das Dual, warum kann ein Input, der nicht `ende' ist, nicht einfach das gleiche Verhalten wie `neu' hervorrufen?Lemiewings hat geschrieben:Außerdem würde ich es gerne so machen, das das Programm nur von vorn anfängt wenn man "Neu" eingibt.
Anyways: Wenn du auf 2 Dinge testen willst nutze `and` bzw `or`.
Michael Markert ❖ PEP 8 Übersetzung ❖ Tutorial Übersetzung (3.x) ⇒ Online-Version (Python 3.3) ❖ Deutscher Python-Insider ❖ Projekte
-
Lemiewings
- User
- Beiträge: 9
- Registriert: Samstag 24. September 2011, 17:00
Nein ich hatte mir das so gedacht das nachdem das Ergebnis des Programms angezeigt wurde, eine Benutzereingabe abgewartet wird.
Dort soll dann bei Eingabe von "Ende" das Programm Abbrechen/Ausschalten, bei Eingabe von "Neu" soll sich die Schleife wiederholen und am Ende wieder auf Benutzereingabe warten.
Dort soll dann bei Eingabe von "Ende" das Programm Abbrechen/Ausschalten, bei Eingabe von "Neu" soll sich die Schleife wiederholen und am Ende wieder auf Benutzereingabe warten.
