Seite 1 von 2
Verfasst: Montag 13. Dezember 2004, 15:08
von Leonidas
jens hat geschrieben:Du hättest auch, damit man das Ergebniss noch sehen kann, ganz am Ende ein pause = raw_input("[ENTER drücken]") einfügen können Wink Muß man auch immer bei Batch-Progs machen, wenn man sie einfach nur per doppel-klick ausführt...
Clython hat geschrieben:Für faule und dumme bietet sich noch dieser kleine Kniff an: Rufe am Ende deines Codes nochmal ein raw_input() auf, dann musst du noch einmal auf Enter drücken bevor das Fenster zugeht.
Man könnte auch nur
raw_input("[ENTER drücken]") nehmen, das geht auch, weil du die Eingabe ja nicht brauchst, aber Clython hat rech: das ist kein guter Stil.
Verfasst: Montag 13. Dezember 2004, 15:09
von jens
Das wuste ich nicht... Auch nicht schlecht... Eine Eingabe die Sinnlos ist, so zu sagen...

Verfasst: Montag 13. Dezember 2004, 15:16
von Leonidas
In Python muss du ja die Rückgabewerte von Funktionen nicht unbedingt nutzen. du kannst sie auch einfach ignorieren. Beispielsweise ist es in Basic so, dass es Subs und Functions gibt, die einen geben etwas zurück die anderen nicht - sonst sind sie gleich. Komisch nicht?

Verfasst: Dienstag 14. Dezember 2004, 19:18
von JOJO
So ich habe mein kleines Quiz-Programm ein bisschen erweitert es läuft auch bis auf eine kleining kleingkeit wo ich mir nich zu helfen weiss.
Hier der neue Code
Code: Alles auswählen
# Autor: Timo Eichsädt
# Datum: 12.12.2004
# quiz.py: Das erste Quiz
def quizfrage():
global punkte
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte = + 1
else:
print "Leider falsch."
print "Richtig ist:", loesung
print
punkte = 0
frage = "Mit welcher Sprache wurde dieses Programm geschrieben? "
loesung = "Python"
quizfrage()
frage = "Mit welchen reservierten Wort beginnt eine Funktionsdefinition? "
loesung = "def"
quizfrage()
frage = "Wie viel reservierte woerter hat Python? "
loesung = "29"
quizfrage()
print "Du hast", punkte
print "von 3 moeglichen Punkten erreicht."
if punkte == 3:
print "Sehr gut Note 1"
else:
print "Nicht schlecht aber du musst mehr ueben"
# End
Ich habe ja gesagt wenn die antwort richtig ist soll er der variablen PUNKT
+1 dazu rechen aber das macht er irgenwie nicht.
Es steht immer am ande das ich nur 1 Punkt erreicht habe obwohl ich alle Fragen richtig beatwortet habe.
Sieht wer den fehler :/ ?
MFG JOJO
Verfasst: Dienstag 14. Dezember 2004, 19:20
von jens
es muß
punkte += 1 heißen nicht punkte=+1 denn das ist das selbe wie punkte=1

Verfasst: Dienstag 14. Dezember 2004, 19:24
von JOJO
Super danke geht =)
MFG JOJO
Verfasst: Freitag 17. Dezember 2004, 17:15
von JOJO
Hi leute
ich wollte mein Quiz nen bissel modifizieren aber das klappt net so ganz
ich möchte wenn jemand die frage falsch beantwortet er die möglichkeit kriegt die frage zu wiederholen dies aber nur einmal machen kann.
Ich hatte ne Idee wie ich das mit dem frage wieder aufrufen aber das klappt nicht aber mit dem das er es nur 1 mal machen darf weiss ich nicht wie ich es machen soll könnt ihr mir da helfen ?
Hier is der momentahne Code:
Code: Alles auswählen
# Autor: Timo Eichsädt
# Datum: 12.12.2004
# quiz.py: Das erste Quiz
def quizfrage():
global punkte
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte += 1
else:
print "Leider falsch."
print "Noch ein versuch? "
print "j oder n"
print
punkte = 0
def frage1():
frage = "Mit welcher Sprache wurde dieses Programm geschrieben? "
loesung = "Python"
quizfrage()
frage = "Mit welchen reservierten Wort beginnt eine Funktionsdefinition? "
loesung = "def"
quizfrage()
frage = "Wie viel reservierte woerter hat Python? "
loesung = "29"
quizfrage()
print "Du hast", punkte
print "von 3 moeglichen Punkten erreicht."
if punkte == 3:
print "Sehr gut Note 1"
else:
print "Nicht schlecht aber du musst mehr ueben"
print
raw_input("um das Programm zu beenden [ENTER] druecken")
# End
MFG JOJO
Verfasst: Freitag 17. Dezember 2004, 17:36
von Dookie
Hi JOJO,
Für die Wiederholung könntest Du eine Schleife verwenden.
Code: Alles auswählen
def quizfrage():
global punkte
for i in xrange(2):# Schleife
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte += 1
break # Schleife verlassen
else:
print "Leider falsch."
print "Noch ein versuch? "
nochmal = raw_input("j oder n ")
if nochmal == "n":
break # Schleife verlassen
# Schleife nochmal versuchen
print
als zweites würde ich an Quizfrage die "frage" und die "loesung" als Argumente übergeben, dann sind diese nicht mehr global definiert.
Code: Alles auswählen
def quizfrage(frage, loesung):
global punkte
for i in xrange(2):# Schleife
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte += 1
break # Schleife verlassen
else:
print "Leider falsch."
print "Noch ein versuch? "
nochmal = raw_input("j oder n ")
if nochmal == "n":
break # Schleife verlassen
# Schleife nochmal versuchen
print
der Aufruf würde dann so aussehen:
Code: Alles auswählen
frage = "Mit welcher Sprache wurde dieses Programm geschrieben? "
loesung = "Python"
quizfrage(frage, loesung)
Du könntest dann auch die Fragen und Lösungen in eine Liste schreiben und dann die Liste in einer Schleife durchlaufen:
Code: Alles auswählen
...
daten = [("Frage 1", "Anwort 1"),
("Frage 2", "Antwort 2"),
("Frage 3", "Antwort 3")]
for frage, loesung in daten:
quitzfrage(frage, loesung)
print "Du hast", punkte
print "von %d moeglichen Punkten erreicht." % len(daten)
...
Gruß
Dookie
Verfasst: Freitag 17. Dezember 2004, 17:54
von JOJO
Super Danke geht auch alles wie gewollt auser 1 kleine sache.
nachdem mann die Frage ein 2 mal beantwortet hat fragt er nochmal ob ich die frage ernuet beantworten will.
Das soll er aber net
wenn die antwort beim 2 mal falsch ist soll er einfach Falsch sagen und zu nächsten frage springen (also nicht nochmal fragen)
der aktuelle Code:
Code: Alles auswählen
# Autor: Timo Eichsädt
# Datum: 12.12.2004
# quiz.py: Das erste Quiz
def quizfrage(frage, loesung):
global punkte
for i in xrange(2):# Schleife
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte += 1
break # Schleife verlassen
else:
print "Leider falsch."
print "Noch ein versuch? "
nochmal = raw_input("j oder n ")
if nochmal == "n":
break # Schleife verlassen
# Schleife nochmal versuchen
print
punkte = 0
frage = "Mit welcher Sprache wurde dieses Programm geschrieben? "
loesung = "Python"
quizfrage(frage, loesung)
frage = "Mit welchen reservierten Wort beginnt eine Funktionsdefinition? "
loesung = "def"
quizfrage(frage, loesung)
frage = "Wie viel reservierte woerter hat Python? "
loesung = "29"
quizfrage(frage, loesung)
print "Du hast", punkte
print "von 3 moeglichen Punkten erreicht."
if punkte == 3:
print "Sehr gut Note 1"
else:
print "Nicht schlecht aber du musst mehr ueben"
print
raw_input("um das Programm zu beenden [ENTER] druecken")
# End
MFG JOJO
Verfasst: Freitag 17. Dezember 2004, 18:53
von Leonidas
JOJO, learning by letting do?
Code: Alles auswählen
#!/usr/bin/env python
# -*- encoding: latin-1 -*-
# Autor: Timo Eichsädt
# Datum: 12.12.2004
# quiz.py: Das erste Quiz
def quizfrage(frage, loesung):
global punkte
global fehlversuche
for i in xrange(2):# Schleife
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte += 1
fehlversuche = 0
break # Schleife verlassen
else:
print "Leider falsch."
fehlversuche += 1
if fehlversuche <= 1:
print "Noch ein versuch? "
nochmal = raw_input("j oder n ")
if nochmal == "n":
break # Schleife verlassen
else:
break
# Schleife nochmal versuchen
print
punkte = 0
fehlversuche = 0
frage = "Mit welcher Sprache wurde dieses Programm geschrieben? "
loesung = "Python"
quizfrage(frage, loesung)
frage = "Mit welchen reservierten Wort beginnt eine Funktionsdefinition? "
loesung = "def"
quizfrage(frage, loesung)
frage = 'Wie viel reservierte Woerter hat Python? '
loesung = "29"
quizfrage(frage, loesung)
print u"Du hast %s von 3 möglichen Punkten erreicht." % str(punkte)
if punkte == 3:
print "Sehr gut Note 1"
else:
print u"Nicht schlecht, aber du musst mehr üben"
Verfasst: Freitag 17. Dezember 2004, 20:15
von Dookie
oder einfach, da wir ja schon einen Zähler haben:
Code: Alles auswählen
def quizfrage(frage, loesung):
global punkte
for i in xrange(2):# Schleife
antwort = raw_input(frage)
if antwort == loesung:
print "Richtig."
punkte += 1
break # Schleife verlassen
else:
print "Leider falsch."
if i < 1:
print "Noch ein versuch? "
nochmal = raw_input("j oder n ")
if nochmal == "n":
break # Schleife verlassen
# Schleife nochmal versuchen
print
Dookie
Verfasst: Samstag 18. Dezember 2004, 18:05
von raist1314
Hab das ganze mal objektorientiert gebaut so spasseshalber, weiss nicht, obs gut geworden ist, guckts euch einfach mal an...
Code: Alles auswählen
#!/usr/bin/env python
#
# kleines quiz
class Question:
def __init__(self, text, answer):
self._text = text
self._answers = []
self._correctAnswer = answer
def addAnswer(self, text):
self._answers.append(text)
def ask(self, num):
points = 0
while(1):
print "Frage %d : %s" % (num ,self._text)
for i in range(0, len(self._answers)):
print "Antwort : %d : %s" % (i, self._answers[i])
userinput = raw_input("???: ")
if int(userinput) == self._correctAnswer:
print "Richtig... ;-)"
points = 1
break
else:
if not raw_input("Leider falsch... nochmal[j/n]??") == 'j':
break
return(points)
class Quiz:
def __init__(self):
self._questions = []
self._points = 0
def addQuestion(self, text, answers, correct):
q = Question(text, correct)
for answer in answers:
q.addAnswer(answer)
self._questions.append(q)
def run(self):
for i in range(0, len(self._questions)):
self._points += self._questions[i].ask(i)
print "you reached %d points..." % self._points
# *** MAIN ***
quiz = Quiz()
quiz.addQuestion(
"Was ist 10 hoch 0",["0", "1", "10", "1000"], 1
)
quiz.addQuestion(
"Wann entdeckte Columbus Amerika", ["1939", "1789", "1492", "1117"], 2
)
quiz.addQuestion(
"Wie lautet Fermats letzter Satz?",
["a^2 + b^2 = c^2", "a^2 / b^2 = c^2", "a^3 + b^3 = c^3", "b^2 / (a^2 / 2) = c^2 / 3"],
2
)
quiz.run()
Fuer Anregungen immer dankbar...
Sebastian
Verfasst: Montag 20. Dezember 2004, 07:55
von jens
Das ist ja super Interressant! Gerade das "def addQuestion()"... Denn da währe ich nie drauf gekommen, eine Klasse mit Daten zu stopfen und diese dann einfach in eine Liste zu "speichern"...
Verfasst: Mittwoch 22. Dezember 2004, 15:08
von raist1314
Wie gesagt, ich weiss nicht, ob meine Lösung ein gutes Beispiel ist, sprich ob ich das ganze gut umgesetzt hab, kann ja auch sein, dass irgend nen Python Guru jetzt die Hände überm Kopf zusammenschlägt und denkt "O Gott... Wer hat das denn verbrochen..."
Denke aber, dass ichs ganz gut gelöst habe... *Hüstel*...
Bis dahin
Sebastian
Verfasst: Mittwoch 22. Dezember 2004, 15:22
von Dookie
Hi raitst1314,
na die Hände über dem Kopf schlägt keiner zusammen, allerdings merkt ein erfahrener Pythonguru auf den ersten Blick, daß Du aus der C++/Java-Fraktion entlaufen bist

Kleiner Tipp, immer in einer Forschleife mit einem Zähler xrange statt range verwenden. Noch besser in dem Fall bei deinem Script enumerate(). Und einige Klammern sind auch überflüssig.
Gruß
Dookie
Verfasst: Donnerstag 23. Dezember 2004, 11:15
von jens
Wie sähe deine OO-Lösung aus???