Super danke geht =)
MFG JOJO
Problem bei dem starten eines Programmes.
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:
MFG JOJO
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
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi JOJO,
Für die Wiederholung könntest Du eine Schleife verwenden.
als zweites würde ich an Quizfrage die "frage" und die "loesung" als Argumente übergeben, dann sind diese nicht mehr global definiert.
der Aufruf würde dann so aussehen:
Du könntest dann auch die Fragen und Lösungen in eine Liste schreiben und dann die Liste in einer Schleife durchlaufen:
Gruß
Dookie
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
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
Code: Alles auswählen
frage = "Mit welcher Sprache wurde dieses Programm geschrieben? "
loesung = "Python"
quizfrage(frage, loesung)
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)
...
Dookie
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
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:
MFG JOJO
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
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
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"
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
oder einfach, da wir ja schon einen Zähler haben:
Dookie
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
[code]#!/usr/bin/env python
import this[/code]
import this[/code]
-
- User
- Beiträge: 52
- Registriert: Dienstag 21. September 2004, 06:58
- Wohnort: Adelzhausen
- Kontaktdaten:
Hab das ganze mal objektorientiert gebaut so spasseshalber, weiss nicht, obs gut geworden ist, guckts euch einfach mal an...
Fuer Anregungen immer dankbar...
Sebastian
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()
Sebastian
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
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"...
-
- User
- Beiträge: 52
- Registriert: Dienstag 21. September 2004, 06:58
- Wohnort: Adelzhausen
- Kontaktdaten:
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
Denke aber, dass ichs ganz gut gelöst habe... *Hüstel*...
Bis dahin
Sebastian
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
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
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
[code]#!/usr/bin/env python
import this[/code]
import this[/code]