Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
ich habe eine kleine (für mich irgendwie schwere) Aufgabe:
Wie muss ich das untenstehende Programm ändern, damit der Computer eine Zahl randomiert und der Nutzer diese Zahl rät. Angeblich soll man nur 2-3 Zeilen ändern müssen, aber ich komme einfach nicht drauf.
Danke im Voraus
import random
def intro():
print """
Denke dir eine Zahl zwischen 1 und 100 aus.
Ich werde versuchen, diese Zahl zu erraten.
Gib ein:
+ , wenn mein Tipp zu klein ist.
- , wenn mein Tipp zu groß ist.
= , wenn mein Tipp stimmt.
Hast du deine Zahl? Dann drücke die Eingabetaste!
"""
irgendwas = raw_input()
def cspiel():
intro()
unten, oben = 1, 100
erraten = 0
versuche = 0
while not erraten:
versuche = versuche + 1
tipp = random.randint(unten,oben)
frage = "Ist deine Zahl %d? " % tipp
antwort = raw_input(frage)
if antwort == "+":
unten = tipp+1
elif antwort == "-":
oben = tipp-1
elif antwort == "=":
erraten = 1
else:
print "Das ist eine ungültige Antwort!"
print "Antworte mit +/=/-"
versuche = versuche - 1
if unten == oben:
tipp = unten
erraten = 1
print
print "Deine Zahl ist %d!" % tipp
print ("Ich habe mit %d Fragen herausgefunden,welche Zahl du dir überlegt hast. Dies ist: "
% versuche)
if versuche==1:
print("Super")
if versuche==2:
print("Super")
if versuche==3:
print("Sehr gut")
if versuche==4:
print("Sehr gut")
if versuche==5:
print("Gute Leistung")
if versuche==6:
print("Mittelmäßige Leistung")
if versuche==7:
print("Mittelmäßige Leistung")
if versuche==8:
print("Mittelmäßige Leistung")
if versuche>8:
print("Schwache Leistung")
print
def zahlenraten():
print " Z A H L E N R A T E N"
print " ====================="
print
weiterspielen = True
while weiterspielen:
cspiel()
if raw_input("Wiederholen Ja/Nein ?") != 'Ja':
weiterspielen = False
print
print "Ich hoffe, du hattest Spaß mit mir!"
if __name__ == "__main__":
zahlenraten()
Zuletzt geändert von Thyestes am Dienstag 24. Januar 2006, 14:30, insgesamt 1-mal geändert.
Ganz so einfach ist es nicht... Du mußt vor allen Dingen vorsehen dass der Benutzer eine Zahl eingibt und nicht "+", "-" und "=", und dann diese Zahl entsprechend interpretieren.
import random
def intro():
print """
Eine Zahl zwischen 1 und 100 denke ich mir nun aus. Du musst diese erraten oder auch eben nicht
Bereit? Dann drücke die Eingabetaste!
"""
irgendwas = raw_input()
def cspiel():
intro()
unten, oben = 1, 100
zahl= random.randint(unten,oben)
erraten = 0
versuche = 0
while not erraten:
versuche = versuche + 1
tipp = "Rate nun eine Zahl zwischen 1 und 100 "
antwort = input(tipp)
if tipp == zahl:
erraten = 1
elif tipp < zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu klein"
elif tipp > zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu groß"
print
print
print ("Du hast mit %d Fragen herausgefunden,welche Zahl mein Speicher sich randomiert hat. Dies ist: "
% versuche)
if versuche==1:
print("Super")
if versuche==2:
print("Super")
if versuche==3:
print("Sehr gut")
if versuche==4:
print("Sehr gut")
if versuche==5:
print("Gute Leistung")
if versuche==6:
print("Mittelmäßige Leistung")
if versuche==7:
print("Mittelmäßige Leistung")
if versuche==8:
print("Mittelmäßige Leistung")
if versuche>8:
print("Schwache Leistung")
print
def zahlenraten():
print " Z A H L E N R A T E N"
print " ====================="
print
weiterspielen = True
while weiterspielen:
cspiel()
if raw_input("Wiederholen Ja/Nein ?") != 'Ja':
weiterspielen = False
print
print "Ich hoffe, du hattest Spaß mit mir!"
if __name__ == "__main__":
zahlenraten()
Zuletzt geändert von Thyestes am Dienstag 24. Januar 2006, 15:29, insgesamt 1-mal geändert.
Thyestes hat geschrieben:Dateien\Sarah.py", line 16, in cspiel
frage = "Rate nun eine Zahl zwischen 1 und 100 " % tipp
NameError: global name 'tipp' is not defined
Bin ich blind, oder kommt die Zeile überhaupt nicht in deinem Skript vor???
Das "% tipp" macht auch keinen Sinn, weil in dem Skript überhaupt kein String-Operator-Platzhalter ist...
import random
def intro():
print """
Eine Zahl zwischen 1 und 100 denke ich mir nun aus. Du musst diese erraten oder auch eben nicht
Bereit? Dann drücke die Eingabetaste!
"""
irgendwas = raw_input()
def cspiel():
intro()
zahl= random.randint(1,100)
erraten = 0
versuche = 0
while not erraten:
versuche = versuche + 1
tipp = "Rate nun eine Zahl zwischen 1 und 100 "
antwort = input(tipp)
print type(antwort)
if tipp == zahl:
erraten = 1
elif tipp < zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu klein"
elif tipp > zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu groß"
print
print
print ("Du hast mit %d Fragen herausgefunden,welche Zahl mein Speicher sich randomiert hat. Dies ist: "
% versuche)
if versuche==1:
print("Super")
if versuche==2:
print("Super")
if versuche==3:
print("Sehr gut")
if versuche==4:
print("Sehr gut")
if versuche==5:
print("Gute Leistung")
if versuche==6:
print("Mittelmäßige Leistung")
if versuche==7:
print("Mittelmäßige Leistung")
if versuche==8:
print("Mittelmäßige Leistung")
if versuche>8:
print("Schwache Leistung")
print
def zahlenraten():
print " Z A H L E N R A T E N"
print " ====================="
print
weiterspielen = True
while weiterspielen:
cspiel()
if raw_input("Wiederholen Ja/Nein ?") != 'Ja':
weiterspielen = False
print
print "Ich hoffe, du hattest Spaß mit mir!"
if __name__ == "__main__":
zahlenraten()
import random
def intro():
print """
Eine Zahl zwischen 1 und 100 denke ich mir nun aus. Du musst diese erraten oder auch eben nicht
Bereit? Dann drücke die Eingabetaste!
"""
irgendwas = raw_input()
def cspiel():
intro()
zahl= random.randint(1,100)
erraten = 0
versuche = 0
while not erraten:
versuche = versuche + 1
tipp = input ("Rate nun eine Zahl zwischen 1 und 100 ")
if tipp == zahl:
erraten = 1
elif tipp < zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu klein"
elif tipp > zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu groß"
print
print
print ("Du hast mit %d Fragen herausgefunden,welche Zahl mein Speicher sich randomiert hat. Dies ist: "
% versuche)
if versuche==1:
print("Super")
if versuche==2:
print("Super")
if versuche==3:
print("Sehr gut")
if versuche==4:
print("Sehr gut")
if versuche==5:
print("Gute Leistung")
if versuche==6:
print("Mittelmäßige Leistung")
if versuche==7:
print("Mittelmäßige Leistung")
if versuche==8:
print("Mittelmäßige Leistung")
if versuche>8:
print("Schwache Leistung")
print
def zahlenraten():
print " Z A H L E N R A T E N"
print " ====================="
print
weiterspielen = True
while weiterspielen:
cspiel()
if raw_input("Wiederholen Ja/Nein ?") != 'Ja':
weiterspielen = False
print
print "Ich hoffe, du hattest Spaß mit mir!"
if __name__ == "__main__":
zahlenraten()
while not erraten:
versuche = versuche + 1
tipp = input ("Rate nun eine Zahl zwischen 1 und 100 ")
if tipp == zahl:
erraten = 1
elif tipp < zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu klein"
elif tipp > zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu groß"
while 1:
versuche = versuche + 1
try:
tipp = int(raw_input("Rate nun eine Zahl zwischen 1 und 100 "))
except:
print "Bitte nur Zahlen eingeben!"
else:
if tipp == zahl:
break
elif tipp < zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu klein"
elif tipp > zahl:
print " Deine Zahl, die du dir ausgedacht hast ist zu groß"
Ach und noch ein Tip... Teile dein Programm in kleinere Häpchen auf Funktionen auf! So das du ganz unten nur noch eine Funktion nach der anderen starten brauchst... So wird alles viel übersichtlicher als es jetzt ist!
# -*- coding: iso-8859-15 -*-
import random
minzahl = 1
maxzahl = 100
meinezahl = random.randrange(minzahl,maxzahl)
i = 0
while True:
try:
val = int(raw_input("Dein Vorschlag? "))
if not minzahl <= val <= maxzahl:
raise ValueError
i += 1
except ValueError:
print "Bitte einen gültigen Vorschlag eingeben..."
continue
if val < meinezahl:
print "Meine Zahl ist größer..."
elif val > meinezahl:
print "Meine Zahl ist kleiner..."
else:
break
print "Danke für's Raten nach %s Versuchen!" % i
if i in (1,2):
print "Super"
elif i in (3,4):
print "Sehr gut"
elif i == 5:
print "Gute Leistung"
elif i in (6,7,8):
print "Mittelmäßige Leistung"
else:
print "Schwache Leistung"
#!/usr/bin/python
# -*- coding: utf-8 -*-
import random
minzahl = 1
maxzahl = 100
meinezahl = random.randrange(minzahl,maxzahl)
def raten():
i = 0
while True:
try:
val = int(raw_input("Dein Vorschlag? "))
if not minzahl <= val <= maxzahl:
raise ValueError
i += 1
except ValueError:
print "Bitte einen gültigen Vorschlag eingeben..."
continue
if val < meinezahl:
print "Meine Zahl ist größer..."
elif val > meinezahl:
print "Meine Zahl ist kleiner..."
else:
break
return i
def ende(i):
print "Danke für's Raten nach %s Versuchen!" % i
if i in (1,2):
print "Super"
elif i in (3,4):
print "Sehr gut"
elif i == 5:
print "Gute Leistung"
elif i in (6,7,8):
print "Mittelmäßige Leistung"
else:
print "Schwache Leistung"
def wiederholen():
try:
i = raw_input("Wiederholen Ja/Nein ?").lower()
except:
return False
if i in ("ja","j","y"):
return True
else:
return False
if __name__ == "__main__":
while True:
versuche = raten()
ende(versuche)
if not wiederholen():
break
Die Ja/Nein Abfrage kann man sicherlich noch ein wenig kürzer gestalten...
if i in (1,2):
print "Super"
elif i in (3,4):
print "Sehr gut"
elif i == 5:
print "Gute Leistung"
elif i in (6,7,8):
print "Mittelmäßige Leistung"
else:
print "Schwache Leistung"