[Point - counter / Plx Tipps Hints] - Guessgame

Code-Stücke können hier veröffentlicht werden.
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

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
Zuletzt geändert von Frozen am Samstag 10. Februar 2007, 02:58, insgesamt 7-mal geändert.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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
Zuletzt geändert von jens am Donnerstag 8. Februar 2007, 13:24, insgesamt 1-mal geändert.

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

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
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.
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Hab oben nochmal Kommentare eingefügt.

Und schau mal das an: [wiki]FAQ#WieStarteIchSkripte[/wiki]

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

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
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

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
Benutzeravatar
jens
Python-Forum Veteran
Beiträge: 8502
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

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

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

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

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

so jetzt funktioniert alles!! :lol:

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 :D

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.
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

So einmal wieder da :D

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?
BlackJack

Wenn man will, dass etwas mehrfach ausgeführt wird, dann steckst man es in eine Schleife.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Ich hätte dieses anzubieten. Mit zwei while-Schleifen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

:shock: :shock: :shock: :shock: :shock: :shock: :shock: :shock:

WTF wenn ich es mal so sagen darf, es ist perfekt leider nicht von mir :P--

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 :arrow:
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

würde gerne dass programm noch abrunden :P (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 :roll: :?

MfG

Gabriel
Benutzeravatar
Luzandro
User
Beiträge: 87
Registriert: Freitag 21. April 2006, 17:03

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
[url=http://www.leckse.net/artikel/meta/profilieren]Profilieren im Netz leicht gemacht[/url]
BlackJack

Vielleicht sollte man das "vielleicht" in dem letzten Satz durch "ganz dringend" ersetzen. ;-)
Frozen
User
Beiträge: 18
Registriert: Dienstag 6. Februar 2007, 22:37

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

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.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten