ein kleines quiz

Stellt hier eure Projekte vor.
Internetseiten, Skripte, und alles andere bzgl. Python.
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

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()
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.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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 ;)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
numerix
User
Beiträge: 2696
Registriert: Montag 11. Juni 2007, 15:09

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 ...
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
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
abgdf

@BlackJack:

Läuft super:
Bild
:P Viele Grüße
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

abgdf hat geschrieben:@BlackJack:

Läuft super
Etwas anderes hätte mich auch an BlackJack zweifeln lassen 8)
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

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
Benutzeravatar
tiax
User
Beiträge: 152
Registriert: Samstag 23. Juli 2005, 17:28
Kontaktdaten:

egal wie richtig oder falsch die ersten zwei Fragen beantwortet werden - wenn man die dritte richtig hat, hat man alle (drei) Punkte :D
Ne invoces expellere non possis
[url=xmpp://florian@florianheinle.de]xmpp:florian@florianheinle.de[/url]
Rootmentor
User
Beiträge: 54
Registriert: Sonntag 17. August 2008, 18:26
Wohnort: Lingen
Kontaktdaten:

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?
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

Indem du das Python-Tutorial liest und verstehst
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

... welches du auf http://docs.python.org/tut/ finden kannst.
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

wuf, gerade in diesem Beispiel sind Multi-line Strings sehr nützlich.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

Hallo Leonidas

Danke für dein Beispiel. Alles klar.

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

Gruss wuf :wink:
Take it easy Mates!
Benutzeravatar
wuf
User
Beiträge: 1529
Registriert: Sonntag 8. Juni 2003, 09:50

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:
Take it easy Mates!
Antworten