Verfasst: Sonntag 14. September 2008, 13:28
Ja, dafür gibt es dann textwrap.dedent, damit kann man die führende Einrückung wegschneiden.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Code: Alles auswählen
# Verfasser: wuf
# Skriptname py_quiz_02_02_01.py (14.09.2008-01)
# Funktion: Ausgabe eines Multi-Line-Strings aus einer Funktion
# oder Methode (mit Einrueckung)
import textwrap
def print_multi_line():
"""Ausgabe eines Multi-Line_Strings"""
print textwrap.dedent("""
--------------------------------
######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()
Code: Alles auswählen
#!/usr/bin/env python
# Abgeleitet von:
# Verfasser: Rootmentor Do Sep 11, 2008 20:56
# http://www.python-forum.de/topic-16021.html
# Modifiziert durch wuf:
# Skriptname py_quiz_02.py (14.09.2008-01)
from textwrap import dedent
punktzahl = 0
PUNKTINFO = "Richtig! Dein Punktestand ist:"
def header():
"""Kopfzeile Rootmentor's Quiz"""
print dedent("""
--------------------------------
######Coded by Rootmentor#######
--------------------------------
Willkommen beim Quiz von Rootmentor""")
header()
print """
Erste frage: Mit was wurde dieses quiz Programmiert?
1. Php
2. Python
3. Html"""
antwort = raw_input("Welche Sprache ist es? ")
if antwort == "2":
punktzahl = 1
print PUNKTINFO, punktzahl
else:
print "Das ist leider Falsch!\nDie Antwort ist : Python"
print
print """Nun kommt die zweite Frage: Welcher Computer ist der beste?
1. windoof
2. Macmini
3. portablepc"""
antwort = raw_input("Welche Computer ist es? ")
if antwort == "2":
punktzahl = 2
print PUNKTINFO, punktzahl
else:
print "Das ist leider Falsch, Dein Punktestand: " + str(punktzahl) +\
"\nDie richtige Antwort ist : Macmini"
print
print """Bereit fuer die letzte alles entscheidene Frage? Gut! Hier kommt sie!
Wie lange habe ich fuer dieses Quiz gebraucht?
1. Ein Tag
2. Eine Woche
3. Zwei Stunden
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:" + str(punktzahl) +\
"\nDie 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()
Code: Alles auswählen
print ("Foo"
"Bar"
"Baz"
"Spam"
"Eggs")
Code: Alles auswählen
# (Frage, (Antwort, Andere Antwort), Prompt, Index der richtigen Antwort)
questions = [("Ist dieses Programm sinnlos?", ("Ja", "Nein"), "Sinnlos? ", 0),
("Ist name langweilig?", ("Nein", "Ja"), "Langeweile? ", 1)]
def display_question(question, answers):
print question
for i, answer in enumerate(answers):
print "%d: %s" % (i+1, answer)
def ask_question(question, answers, prompt, right_answer):
display_question(question, answers)
while True:
try:
ans = int(raw_input(prompt))
if 0 < ans <= len(answers):
break
except ValueError:
pass
return ans-1 == right_answer
def main():
score = 0
for qst in questions:
question, answers, prompt, right_answer = qst
if ask_question(question, answers, prompt, right_answer):
score+=1
else:
print "Richtig waere \"%s\" gewesen" % answers[right_answer]
print score
if __name__ == "__main__":
main()
Hast du dies auch wirklich ausprobiert?name hat geschrieben:Wie waers einfach mitDas geht dann ueberall, auch wenns eingerueckt ist, ohne Probleme.Code: Alles auswählen
print ("Foo" "Bar" "Baz" "Spam" "Eggs")
Das man da die newlines braucht sollte sich doch von selbst verstehen. Also das waere dann:wuf hat geschrieben:Hallo name
Hast du dies auch wirklich ausprobiert?name hat geschrieben:Wie waers einfach mitDas geht dann ueberall, auch wenns eingerueckt ist, ohne Probleme.Code: Alles auswählen
print ("Foo" "Bar" "Baz" "Spam" "Eggs")
Gruss wuf
Code: Alles auswählen
print ("Foo\n"
"Bar\n"
"Baz\n"
"Spam\n"
"Eggs")
Code: Alles auswählen
# Abgeleite von meinem Beitrag (So Sep 14, 2008 15:16)
# Habe den Vorschlages für die Ausgabe eines Multi-Line-Strings
# von 'name' angewendet.
# Verfasser: wuf
# Skriptname py_quiz_02_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 ("\n--------------------------------\n"
"######Coded by Rootmentor#######\n"
"--------------------------------\n\n"
"Willkommen beim Quiz von Rootmentor\n\n"
"Erste frage: Mit was wurde dieses quiz Programmiert?\n"
"1. Php\n"
"2. Python\n"
"3. Html")
antwort = raw_input("Welche Sprache ist es? ")
print_multi_line()
Wenn es jeder von selbst verstehen würde brauchte es dieses Forum nicht mehr.name hat geschrieben: Das man da die newlines braucht sollte sich doch von selbst verstehen. Also das waere dann:
Das ueberlass ich mal dem OP als Fleissaufgabe, sonst schreib ich ihm ja sein ganzes Programm.EyDu hat geschrieben:@name: Du könntest das zusätzliche Feld für die Angabe der korrekten Antwort noch sparen, wenn du diese immer im ersten Element den Antwort-Tupels ablegst. Vor der Ausgabe mischt man dann einfach alle möglichen Antworten und zeigt diese dann dem Benutzer.
Dankeschoenwuf hat geschrieben:Übrigens dein Ansatz-Code für das Quiz-Programm finde ich gut (fast flaw-less).
Code: Alles auswählen
multistring = """
--------------------------------
######Coded by Rootmentor#######
--------------------------------
Willkommen beim Quiz von Rootmentor
Erste frage: Mit was wurde dieses quiz Programmiert?
1. Php
2. Python
3. Html"""
def print_multi_line():
print multistring
antwort = raw_input("Welche Sprache ist es? ")
print_multi_line()
Böse globale Variable!bremer hat geschrieben:Man braucht kein textwrap.dedent um das Einrückungsproblem zu beheben.
Code: Alles auswählen
multistring = """ -------------------------------- ######Coded by Rootmentor####### -------------------------------- Willkommen beim Quiz von Rootmentor Erste frage: Mit was wurde dieses quiz Programmiert? 1. Php 2. Python 3. Html""" def print_multi_line(): print multistring antwort = raw_input("Welche Sprache ist es? ") print_multi_line()
Naja, so schlimm ist das hier nicht - es ist ja nur ein Lesezugriff.Klip hat geschrieben:Böse globale Variable!
Womit wir wieder am Anfang, dem Einrueckungsproblem, waeren. Ich persoenlich finde """ strings eingerueckt grauslich, weil die folgenen Zeilen sehen immer so aus als waeren sie auf Modul-Ebene.numerix hat geschrieben:Naja, so schlimm ist das hier nicht - es ist ja nur ein Lesezugriff.Klip hat geschrieben:Böse globale Variable!
Allerdings gibt es auch keinen guten Grund, multistring nicht im lokalen Namensraum der Funktion zu definieren.
Deshalb wurde ja bereits festgestellt, dass ``textwrap.dedent`` existiert. Oder verstehe ich gerade etwas falsch?name hat geschrieben:Womit wir wieder am Anfang, dem Einrueckungsproblem, waeren. Ich persoenlich finde """ strings eingerueckt grauslich, weil die folgenen Zeilen sehen immer so aus als waeren sie auf Modul-Ebene.
Code: Alles auswählen
#!/usr/bin/env python
import os
int = 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? \n 1. Php: \n 2. Pyhton: \n 3. Html: "
antwort = raw_input()
if antwort == "2":
int += 1
print "Richtig du dein punktestand"
print int
else:
print "Das ist leider Falsch"
print "Die antwort ist : Python"
print " Nun kommt die zweite Frage: Welcher Computer ist der beste? \n 1.windoof \n" + "2. Mac mini \n" + "3.Portablepc"
antwort2 = raw_input()
if antwort2 == "2":
int += 1
print "Richtig dein Punktestand:"
print int
else:
print "Das ist leider Falsch, Dein Punktestand:"
print int
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? /n 1. ein tag :\n 2. Eine woche :\n 3. Zwei Stunden :\n 4.vier bis sechs tage"
antwort3 = raw_input()
if antwort3 == "3":
int += 1
print "Richtig dein Punktestand"
print int
else:
print "Das ist leider Falsch, Dein Punktestand:"
print int
print "Die richtige antwort ist : Zwei Stunden"
print "So das wars mit dem quiz. Dein punktestand betraegt"
print int
print "Bis dann!"
exit()
Und was genau von meinem Beispiel hast du jetzt bitte verwendet?Rootmentor hat geschrieben:ja dein beispiel war schon sehr hilfreich so sietzt jetzt ausCode: Alles auswählen
....