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

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!! :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.

Verfasst: Donnerstag 8. Februar 2007, 20:02
von Frozen
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?

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

Verfasst: Donnerstag 8. Februar 2007, 23:05
von Frozen
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

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

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.