Seite 1 von 2
[Point - counter / Plx Tipps Hints] - Guessgame
Verfasst: Donnerstag 8. Februar 2007, 12:50
von Frozen
ich weis dass es was ganz easy ist, aber ich komme trodzdem nicht weiter...
ich versuche zwei sachen zu realisieren:
1) Dass wenn man einen Buchstaben eingibt statt eine Zahl es sich nicht schließt (ich weit dass wenn ich int wegnehme es klappen würde aber ich möchte es nicht weil .... punkt 2)
2) Dass wenn man einen Buchstaben eingibt statt eine Zahl eine meldung kommt dass es ein Buchstabe ist und keine Zahl aber dass für dieses "Spiel" eine Zahl notwenidg ist.
Könnte mir bitte jemand helfen?
Die Idee des Zahlenratenspieles ist nicht meine ich habe es gesehen genommen in der intention es auszubauen und daraus zu lernen
MfG
Gabriel
Code: Alles auswählen
#!/usr/bin/python
import random
print "Welcome to the Guessing Game"
number = random.randrange(1, 11, 1)
guess = 0
while guess != number:
guess = raw_input("Guess a Number from 1-10: ")
if guess == number:
datei = open ('right.txt', 'r')
sammlung = datei.readlines()
datei.close ()
right = random.choice (sammlung)
print right
if guess != int
print "This is not a number"
else:
datei = open ('wrong.txt', 'r')
sammlung = datei.readlines()
datei.close ()
wrong = random.choice (sammlung)
print wrong
Verfasst: Donnerstag 8. Februar 2007, 13:07
von jens
Code: Alles auswählen
while 1:
i = raw_input("Guess a Number from 1-10: ")
try:
i = int(i) # String eingabe in Zahl umwandeln
except ValueError: # Fehler abfangen, wenn die Eingaben nicht umgewandelt werden kann
print "Error: Not a number!"
continue
if i > 10 or i < 1:
print "Error: Out of range (1-10)!"
continue
else:
print "OK"
break # While Schleife verlassen
print "Number:", i
Verfasst: Donnerstag 8. Februar 2007, 13:18
von Frozen
ich bedanke mich mal zuerst xD
möchte ja nicht nerven aber um sicher zu gehen, ich bitte um gedult, der code denn du mir gegeben hast, den verstehe ich ja (zum teil xD) und ich vermute ich muss dass so schreiben ab der while sentence.
ich vemute dass noch ein fehler da ist weil ich kann das programm garnicht starten (arbeite mit xp, habe die datei mit .py geschpeichert und windows kennt die endung) ich kann sozusagen diesen code nicht in meinen richtig integrieren
plx nicht flamen
es ist vlt mein 2 tag mit python
MfG
Gabriel
Code: Alles auswählen
#!/usr/bin/python
import random
print "Welcome to the Guessing Game"
number = random.randrange(1, 11, 1)
guess = 0
while 1:
i = raw_input("Guess a Number from 1-10: ")
try:
i = int(i)
except ValueError:
print "Error: Not a number!"
continue
if i > 10 or i < 1:
print "Error: Out of range (1-10)!"
continue
else:
print "OK"
break
print "Number:", i
if 1 == number:
datei = open ('right.txt', 'r')
sammlung = datei.readlines()
datei.close ()
right1 = random.choice (sammlung)
print right1
else:
datei = open ('wrong.txt', 'r')
sammlung = datei.readlines()
datei.close ()
wrong1 = random.choice (sammlung)
print wrong1
Verfasst: Donnerstag 8. Februar 2007, 13:22
von BlackJack
Schau Dir mal die Anweisungen ``try`` und ``except`` an und die Ausnahme die ``int()`` auslöst, wenn die Zeichenkette keine gültige Zahl darstellt.
Verfasst: Donnerstag 8. Februar 2007, 13:26
von jens
Hab oben nochmal Kommentare eingefügt.
Und schau mal das an: [wiki]FAQ#WieStarteIchSkripte[/wiki]
Verfasst: Donnerstag 8. Februar 2007, 13:34
von Frozen
na ja es ist ja nicht so dass alle .py sich nich ausführen lassen, nur hat dieses game -.-
ich habe die zeile print "Number:", i gelöscht und es ist gestartet aber als ich eine zahl eingegen haben ist es abgestürzt und wenn ich einen buchstaben eingegeben habe so kam die von mir ersehnte meldung error not a number xD
wo ist mein fehler?
/---------------------------/
wie habt ihr angefangen bzw wie war der start in der programmierwelt?
und wie habt ihr bis zu euren jetzigen level weitergearbeitet?
ich tuhe mich noch leider schwer
MfG
Gabriel
Code: Alles auswählen
#!/usr/bin/python
import random
print "Welcome to the Guessing Game"
number = random.randrange(1, 11, 1)
guess = 0
while 1:
i = raw_input("Guess a Number from 1-10: ")
try:
i = int(i) # String eingabe in Zahl umwandeln
except ValueError: # Fehler abfangen, wenn die Eingaben nicht umgewandelt werden kann
print "Error: Not a number!"
continue
if i > 10 or i < 1:
print "Error: Out of range (1-10)!"
continue
else:
print "OK"
break # While Schleife verlassen
print "Number: ", i
if i == number:
datei = open ('right.txt', 'r')
sammlung = datei.readlines()
datei.close ()
right1 = random.choice (sammlung)
print right1
else:
datei = open ('wrong.txt', 'r')
sammlung = datei.readlines()
datei.close ()
wrong1 = random.choice (sammlung)
print wrong1
(habe mir die comments geholt damit ich auch später es verstehen kann, hoffentlich geht dass
Verfasst: Donnerstag 8. Februar 2007, 13:53
von Frozen
yeah xD mein erster winzi kleiner erfolg ich habe es geschafft dass es startet und dass es funktioniert habe folgendes gemacht:
Code: Alles auswählen
number = random.randrange(1, 11, 1)
guess = 0
while 1:
i = raw_input("Guess a Number from 1-10: ")
try:
i = int(i) # String eingabe in Zahl umwandeln
except ValueError: # Fehler abfangen, wenn die Eingaben nicht umgewandelt werden kann
print "Error: Not a number!"
continue
break # While Schleife verlassen
if i == number:
aber die idee auch eine meldung zu haben wenn man eine zahl eingibt die aus den vorgegebenen bereich austritt finde ich genial, aber ich musste das löschen damit der rest funktioniert jetzt die folgende frage wie kann ich diese meldung behalten ohne den rest zu gefährden?
MfG
Gabriel
Verfasst: Donnerstag 8. Februar 2007, 14:12
von jens
Ich verstehe nicht dein Problem... Vielleicht wird es so klarer:
Code: Alles auswählen
while 1:
i = raw_input("Guess a Number from 1-10 ('q' to abort): ")
if i == "q":
print "quit..."
break
try:
i = int(i) # String eingabe in Zahl umwandeln
except ValueError: # Fehler abfangen, wenn die Eingaben nicht umgewandelt werden kann
print "Error: Not a number!"
continue # neue Eingabe
if i > 10 or i < 1:
print "Error: Out of range (1-10)!"
continue # neue Eingabe
# Mach hier irgendwas mit der eingegeben Zahl...
print "OK"
print "Number:", i
Verfasst: Donnerstag 8. Februar 2007, 14:15
von Frozen
yeah! ich bin weitergekommen

1)Meldung kommt wenn es ein Buchstabe ist
2)Meldung kommt wenn es out of range ist
wenn ich eine zahl eingeben so schließt es sich, ich schau mal wenn ich es nicht schaffe so poste ich hir nochmal rein
danke daweil
MfG
Gabriel
Verfasst: Donnerstag 8. Februar 2007, 14:27
von Leonidas
Frozen hat geschrieben:wenn ich eine zahl eingeben so schließt es sich, ich schau mal wenn ich es nicht schaffe so poste ich hir nochmal rein
Schön dass du es hinbekommen hast - kannst du dann derweil den Threadtitel ändern, damit er Aussage bekommt?
Verfasst: Donnerstag 8. Februar 2007, 14:32
von Frozen
so jetzt funktioniert alles!!
ok schon gemacht worden hoffentlich ist der titel jetzt ok
MfG
Gabriel
P.S Mit dem "game" bin ich nocht nicht fertig also macht euch gefasst dass ich hir noch weiterposte
habe gerade gesehen dass wenn man die richtige zahl gefunden hat dass sie sich nicht ändert, mann muss dafür dass programm neu starten.... werde versuchen dass zu ändern.
Verfasst: Donnerstag 8. Februar 2007, 20:02
von Frozen
So einmal wieder da
ich habe veruscht mein aktuelles programm so umzuschreiben dass nachdem der user die richtige zahl gefunden hat, eine neue zahl random gewählt wird damit es nicht immer die gleiche zahl ist die richtig ist.
habe folgendes versucht aber klappte nicht, bitte wieder um hilfe
MfG
Gabriel
Einmal das ganze stück
Code: Alles auswählen
#!/usr/bin/python
import random
print "Welcome to the Guessing Game"
number = random.randrange(1, 11, 1)
guess = 0
while 1:
i = raw_input("Guess a Number from 1-10: ")
try:
i = int(i) # String eingabe in Zahl umwandeln
except ValueError: # Fehler abfangen, wenn die Eingaben nicht umgewandelt werden kann
print "Error: Not a number!"
continue
if i > 10 or i < 1:
print "Error: Out of range (1-10)!"
continue # neue Eingabe
break # While Schleife verlassen
if i == number:
datei = open ('right.txt', 'r')
sammlung = datei.readlines()
datei.close ()
right1 = random.choice (sammlung)
print right1
else:
datei = open ('wrong.txt', 'r')
sammlung = datei.readlines()
datei.close ()
wrong1 = random.choice (sammlung)
print wrong1
und jetzt meine versuche:
Code: Alles auswählen
if i == number:
datei = open ('right.txt', 'r')
sammlung = datei.readlines()
datei.close ()
right1 = random.choice (sammlung)
print right1
number += 1 #es wird um ein erhöt aber wenn es aus dem vorgegebenen bereich geht dann funktioniert es nicht mehr , logisch
Code: Alles auswählen
if i == number:
datei = open ('right.txt', 'r')
sammlung = datei.readlines()
datei.close ()
right1 = random.choice (sammlung)
print right1
number = random.randrage(1, 11, 1) # funktionert auch nicht wenn man das richtige erwischt so stürzt es ab :P
und habe auch noch paar sachen versucht
ich versuche ja dass erst wenn man die richtige zahl gefunden hat eine neue zahl erstellt werden soll, nicht dass nach jedem versuch eine neue zahl "erstellt" wird
@admins-- soll ich die "alten" codes in diesen bereich löschen damit das formun nicht "überlastet" wird?
Verfasst: Donnerstag 8. Februar 2007, 20:34
von BlackJack
Wenn man will, dass etwas mehrfach ausgeführt wird, dann steckst man es in eine Schleife.
Verfasst: Donnerstag 8. Februar 2007, 20:40
von Leonidas
Ich hätte
dieses anzubieten. Mit zwei while-Schleifen.
Verfasst: Donnerstag 8. Februar 2007, 22:46
von Frozen
WTF wenn ich es mal so sagen darf, es ist perfekt leider nicht von mir

--
ganz anders als mein anfänglicher code, ich muss mich mal in deins einarbeiten und gleich die erste n00b frage was ist def?
Nochmals danke
MfG
Gabriel
Ich vermute ihr hattet es satt mit mir und habt mir desshalb mir einen kompletten code gegeben

Verfasst: Donnerstag 8. Februar 2007, 23:05
von Frozen
würde gerne dass programm noch abrunden

(ja ja ich weit! ihr fragt euch schon und wat er gemacht? ihr habt ja recht aber es hilft mir enorm)
ein counter wäre cool, bzw bei jedem richtigen guess ein punkt mehr oder einfach der counter +1
dachte es mir mal so:
Counter/Points
Guess a Number from 1-10: :::
Wow you did it
Counter/Points 1
New round
oder so
MfG
Gabriel
Verfasst: Freitag 9. Februar 2007, 07:09
von Luzandro
Frozen hat geschrieben:Code: Alles auswählen
while 1:
...
break # While Schleife verlassen
if i == number:
....
Du solltest deine Kommentare besser lesen - wenn wie dort angegeben die While Schleife verlassen wird, wie soll der Teil danach jemals erreicht werden?
ganz anders als mein anfänglicher code, ich muss mich mal in deins einarbeiten und gleich die erste n00b frage was ist def?
Damit definierst du eine Funktion - du solltest dir vllt. einmal das Tutorial anschauen:
http://docs.python.org/tut/tut.html
Verfasst: Freitag 9. Februar 2007, 08:15
von BlackJack
Vielleicht sollte man das "vielleicht" in dem letzten Satz durch "ganz dringend" ersetzen.

Verfasst: Freitag 9. Februar 2007, 12:55
von Frozen
jo kp meine lieben freunde ich habe es ja schon gestern nachgeschaut usw, dokumentation heruntergeladen tutorial von Alan Guald bin ich am lesen so wie auch das tutorial von der python seite usw
ich danke trodzdem
MfG
Gabriel

Verfasst: Freitag 9. Februar 2007, 16:02
von Leonidas
Frozen hat geschrieben:ganz anders als mein anfänglicher code, ich muss mich mal in deins einarbeiten und gleich die erste n00b frage was ist def?
Vielleichst solltest du dir doch mal ein Tutorial durchlasen? def definiert eine Funktion. Der Code hat einfach Funktionen gebraucht, dadurch wurde er gleich leserlicher.