Seite 1 von 3

ein kleines quiz

Verfasst: Donnerstag 11. September 2008, 19:56
von Rootmentor
Moin hier ich habe zu lernzwecken ein kleines quiz programmiert.
Die fragen sind so najaa
Aber das wäre ja leicht zu ändern.

Code: Alles auswählen

#!/usr/bin/env python
import os
punktzahl = 0
punktinfo = "Dein punktestand:"
print "--------------------------------"
print "######Coded by Rootmentor#######"
print "--------------------------------"
print "Wilkommen beim Quiz von Rootmentor"
print "Erste frage: Mit was wurde dieses quiz Programmiert? / 1. Php : 2. Pyhton : 3. Html"
antwort = raw_input()
if antwort == "2":
    punktzahl = 1
    print "Richtig du dein punktestand"
    print punktzahl
else:
        print "Das ist leider Falsch"
        print "Die antwort ist : Python"

print " Nun kommt die zweite Frage: Welcher Computer ist der beste? / 1. windoof : 2. Macmini : 3. portablepc"
antwort2 = raw_input()
if antwort2 == "2":
    punktzahl = 2
    print "Richtig dein Punktestand:"
    print punktzahl
else:
      print "Das ist leider Falsch, Dein Punktestand:"
      print punktzahl
      print "Die richtige antwort ist : Macmini"

print "Bereit fuer die Letzte alles entscheidene Frage?Gut!Hier kommt sie!"
print "Wie lange habe ich fuer dieses quiz gebraucht? / 1. ein tag : 2. Eine woche : 3. Zwei Stunden : 4.vier bis sechs tage"
antwort3 = raw_input()
if antwort3 == "3":
    punktzahl = 3
    print "Richtig dein Punktestand"
    print punktzahl
else:
    print "Das ist leider Falsch, Dein Punktestand:"
    print punktzahl
    print "Die richtige antwort ist : Zwei Stunden"


print "So das wars mit dem quiz. Dein punktestand betraegt"
print punktzahl
print "Bis dann!"
exit()

Verfasst: Donnerstag 11. September 2008, 20:13
von BlackJack
Viele Codewiederholungen und die Fragen sind *nicht* leicht zu ändern. Wenn man zum Beispiel irgendwo eine Frage einfügen will muss man überall `punktzahl` anpassen. Unter "leicht" stelle ich mir etwas anderes vor.

Die Fragen und Antworten gehören in eine Datenstruktur, die vom Programm dann verarbeitet wird. Das hätte man selbst auf'm C64 in BASIC so gemacht.

Verfasst: Donnerstag 11. September 2008, 20:13
von Leonidas
Also erstmal solltest du deine Einrückung mal konsistent hinbekommen. Was Du auch nutzen solltest sind Multi-Line-Strings ``"""mit drei Anführungszeichen"""`` und String-Formatting ``"Du hast %d Punkte." % 0``.

Inhaltlich finde ich "Pyhton" etwas seltsam und dass der Macmini der beste Computer ist zweifle ich jetzt auch mal an ;)

Verfasst: Donnerstag 11. September 2008, 20:14
von numerix
Oh Schreck!

Wenn du schon laut Quizfrage 3 zwei Stunden für diesen Code gebraucht hast, vielleicht hättest du die 121. Minute noch dranhängen und die Unmengen an Rechtschreibfehlern reduzieren können.

Über die Qualität des Python-Codes äußere ich mich lieber erst gar nicht. Das werden andere sicher in aller Kürze tun ...

Edit: Haben andere vor Kürze schon getan ...

Verfasst: Donnerstag 11. September 2008, 21:11
von BlackJack
Nur mal so aus Nostalgiegründen in den C64 gehackt:

Code: Alles auswählen

   10 print "========="
   20 print "quiz v1.0"
   30 print "========="
   40 dim a$(10):p=0
   50 read f$:if f$="" then end
   60 print f$;"?":read n,c:for i=1 to n:read a$(i):print i;") ";a$(i):next i
   70 input a:if a=c then print "richtige antwort!":p=p+1:goto 90
   80 print "leider falsch.":print "die richtige antwort lautet: ";a$(c)
   90 print "punktestand:";p:print:goto 50
  100 rem --------------------------------
  110 rem datenstruktur fuer fragen und
  120 rem antworten.
  130 rem   * frage
  140 rem   * anzahl der antworten (n)
  150 rem   * nummer der richtigen antwort
  160 rem   * n antworten
  170 rem endmarkierung ist eine leere
  180 rem zeichenkette.
  190 data "mit welcher sprache wurde dieses quiz programmiert"
  200 data 3,2,"php","basic","html"
  210 data "welcher computer ist der beste"
  220 data 4,3,"windows pc","mac mini","c64","speccy"
  230 data "wie lange habe ich fuer dieses quiz gebraucht"
  240 data 4,3,"einen tag","eine woche","10 minuten","vier bis sechs tage"
  250 data "":rem endmarkierung

Verfasst: Freitag 12. September 2008, 01:05
von abgdf
Yo, mich hat das auch an C64er-Zeiten erinnert. Da gab's mal so ein primitives Basic-"Adventure", da mußte man
> Drachen Chip-Heft ins Maul werfen
Erinnert sich vielleicht jemand ?

Viele Grüße

Verfasst: Freitag 12. September 2008, 21:57
von abgdf
@BlackJack:

Läuft super:
Bild
:P Viele Grüße

Verfasst: Freitag 12. September 2008, 23:53
von Leonidas
abgdf hat geschrieben:@BlackJack:

Läuft super
Etwas anderes hätte mich auch an BlackJack zweifeln lassen 8)

Verfasst: Samstag 13. September 2008, 23:01
von Rootmentor
Wie geil xDDD
Nja die fragen sind nicht gut durchdacht ich weis.

ich muss dazu sagen ich bin jetzt seit ein paar Wochen dabei in Python zu programmieren und hatte vorher keine programmierkenntnisse, dass war halt jetzt mein größtes Projekt. Ich bin eig. zufrieden damit :D

Verfasst: Samstag 13. September 2008, 23:31
von tiax
egal wie richtig oder falsch die ersten zwei Fragen beantwortet werden - wenn man die dritte richtig hat, hat man alle (drei) Punkte :D

Autsch

Verfasst: Sonntag 14. September 2008, 09:23
von Rootmentor
Okay scheiße habs auch gesehn....
Nja beim testen is mir das nicht aufgefallen...:oops:
Am besten ich setze die punktzahl in einen integer oder?
Und dann bei einer richtigen antwort +1
Wie würde das aussehen?

Wie bekomm ich bei den fragen einen zeilenumbruch?

Verfasst: Sonntag 14. September 2008, 09:36
von apollo13
Indem du das Python-Tutorial liest und verstehst

Verfasst: Sonntag 14. September 2008, 10:25
von name
... welches du auf http://docs.python.org/tut/ finden kannst.

Verfasst: Sonntag 14. September 2008, 10:42
von wuf
Hallo Rootmentor

Hier etwas zum studieren. Leicht angepasst. Leerzeilen in eine Skript sind nicht verboten.
Eine von vielen Varianten:

Code: Alles auswählen

#!/usr/bin/env python
# Verfasser: Rootmentor Do Sep 11, 2008 20:56
# http://www.python-forum.de/topic-16021.html
# Skriptname py_quiz_01.py (14.09.2008-01)

import os
punktzahl = 0
PUNKTINFO = "Richtig! Dein Punktestand ist:"

print
print "--------------------------------"
print "######Coded by Rootmentor#######"
print "--------------------------------"

print
print "Willkommen beim Quiz von Rootmentor"
print
print "Erste frage: Mit was wurde dieses quiz Programmiert?"
print " 1. Php"
print " 2. Python"
print " 3. Html"
antwort = raw_input("Welche Sprache ist es? ")

if antwort == "2":
    punktzahl = 1
    print PUNKTINFO, punktzahl
    print
else:
    print "Das ist leider Falsch"
    print "Die Antwort ist : Python"
    print

print "Nun kommt die zweite Frage: Welcher Computer ist der beste?"
print " 1. windoof"
print " 2. Macmini"
print " 3. portablepc"
antwort = raw_input("Welche Computer ist es? ")

if antwort == "2":
    punktzahl = 2
    print PUNKTINFO, punktzahl
    print
else:
    print "Das ist leider Falsch, Dein Punktestand:", punktezahl
    print "Die richtige Antwort ist : Macmini"
    print

print "Bereit fuer die letzte alles entscheidene Frage? Gut! Hier kommt sie!"
print "Wie lange habe ich fuer dieses Quiz gebraucht?"
print " 1. Ein Tag"
print " 2. Eine Woche"
print " 3. Zwei Stunden"
print " 4. Vier bis sechs Tage"
antwort = raw_input("Wie lange? ")

if antwort == "3":
    punktzahl = 3
    print PUNKTINFO, punktzahl
    print
else:
    print "Das ist leider Falsch, Dein Punktestand ist:", punktzahl
    print "Die richtige Antwort ist : Zwei Stunden"
    print

print "So das wars mit dem Quiz. Dein Punktestand betraegt", punktzahl

print
print "BIS ZUM NAECHSTEN MAL !!!"
print

exit()
Gruss wuf :wink:

Verfasst: Sonntag 14. September 2008, 10:58
von Leonidas
wuf, gerade in diesem Beispiel sind Multi-line Strings sehr nützlich.

Verfasst: Sonntag 14. September 2008, 11:17
von wuf
Hallo Leonidas

Was ist ein 'Multi-line Strings'? Es ist ein neuer Begriff für mich. Könntest du bitte ein kleines Beispiel zeigen, welches auf das obige Skript angewendet ist.

Danke Gruss wuf :wink:

Verfasst: Sonntag 14. September 2008, 11:23
von DasIch
wuf hat geschrieben:Was ist ein 'Multi-line Strings'? Es ist ein neuer Begriff für mich.
Line heisst auf Deutsch Zeile ;) Also ein String der über mehrere Zeilen geht.

Bsp:

Code: Alles auswählen

In [121]: print """hello
   .....: world"""
hello
world

Verfasst: Sonntag 14. September 2008, 11:23
von Leonidas
wuf hat geschrieben:Könntest du bitte ein kleines Beispiel zeigen, welches auf das obige Skript angewendet ist.
Natürlich, hier bitte:

Code: Alles auswählen

print """
--------------------------------
######Coded by Rootmentor#######
--------------------------------

Willkommen beim Quiz von Rootmentor

Erste frage: Mit was wurde dieses quiz Programmiert?
 1. Php
 2. Python
 3. Html"""
Letztendlich sind das Strings die mit dreifachen (Doppel)Quotes eingefasst sind und über mehrere Zeilen gehen können.

Verfasst: Sonntag 14. September 2008, 11:36
von wuf
Hallo Leonidas

Danke für dein Beispiel. Alles klar.

@DasIch Danke für deine belehrende Aufklärung :lol:

Gruss wuf :wink:

Verfasst: Sonntag 14. September 2008, 13:24
von wuf
Hallo Leonidas

Ich habe mit der Ausgabe eines Multi-Line-Strings noch ein wenig herum experimentiert. Hier noch meine ergänzende Feststellung:

Der Code für die Ausgabe, wenn er auf Modulebene geschrieben wird:

Code: Alles auswählen

# Verfasser: wuf
# Skriptname py_quiz_02_01.py (14.09.2008-01)

# Funktion: Ausgabe eines Multi-Line-Strings auf Modulebene

print """
--------------------------------
######Coded by Rootmentor#######
--------------------------------

Willkommen beim Quiz von Rootmentor

Erste frage: Mit was wurde dieses quiz Programmiert?
 1. Php
 2. Python
 3. Html"""

antwort = raw_input("Welche Sprache ist es? ")
Ausgaberesultat auf der Konsole:

Code: Alles auswählen

--------------------------------
######Coded by Rootmentor#######
--------------------------------

Willkommen beim Quiz von Rootmentor

Erste frage: Mit was wurde dieses quiz Programmiert?
 1. Php
 2. Python
 3. Html
Welche Sprache ist es?
Der Code für die Ausgabe, wenn er in eine Funktion geschrieben wird:

Code: Alles auswählen

# Verfasser: wuf
# Skriptname py_quiz_02_02.py (14.09.2008-01)

# Funktion: Ausgabe eines Multi-Line-Strings aus einer Funktion
#           oder Methode (mit Einrueckung)

def print_multi_line():
    """Ausgabe eines Multi-Line_Strings"""

    print """
    --------------------------------
    ######Coded by Rootmentor#######
    --------------------------------

    Willkommen beim Quiz von Rootmentor

    Erste frage: Mit was wurde dieses quiz Programmiert?
    1. Php
    2. Python
    3. Html"""
    antwort = raw_input("Welche Sprache ist es? ")

print_multi_line()
Ausgaberesultat auf der Konsole:

Code: Alles auswählen

    --------------------------------
    ######Coded by Rootmentor#######
    --------------------------------

    Willkommen beim Quiz von Rootmentor

    Erste frage: Mit was wurde dieses quiz Programmiert?
    1. Php
    2. Python
    3. Html
Welche Sprache ist es?
Fesstellung: Wenn der Code für die Ausgabe eines 'Multi-Line-Strings' in eine Funktion bzw. Methode geschrieben wird, übernimmt der 'Multi-Line-String' die Leerzeichen der Einrückung!

Gruss wuf :wink: