Seite 1 von 2
Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 18:49
von kRew
Hallo, ich bin neu hier und auch neu im Umgang mit Python.
Ich habe da mal eine Frage und stelle am besten den Code mal hier rein.
Vielleicht könnt ihr mir helfen ihn zu korregieren, da ich nicht weiß, was daran falsch ist.
Vielen Dank
EDIT: Ich benutze Python 3.2a.3
Code: Alles auswählen
import random
import os
def main():
os.system("title Random Numbers Generator")
lower = input("Lower limit: ")
upper = input("Upper limit: ")
quantity = input("Qunatity: ")
n = 0
while n<quantity:
print random.randit(lower, upper)
n += 1
if n == quantity:
input ("Press Enter")
os.system("cls")
main()
main()
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:07
von Barabbas
Hallo,
mir fallen zunächst zwei Fehler auf:
*
os.system() verwendest du falsch. Hier ist es aber ohnehin überflüssig, also lösche die Zeile einfach.
* die Funktion randit() gibt es nicht. Du meinst sicher randint()
Grundsätzlich kann man natürlich besser helfen, wenn man Fehlermeldungen hat - aber in diesem Fall waren die Fehler ja noch recht gut auszumachen
Schöne Grüße,
brb
//edit: \\
Wie numerix schon sagt, gibt es auch einige konzeptionelle Probleme bzw. Sachen, die man besser machen könnte. So wird dein Programm irgendwann an das Rekursions-Limit stoßen und einen entsprechenden Fehler produzieren.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:09
von numerix
kRew hat geschrieben:Vielleicht könnt ihr mir helfen ihn zu korregieren, da ich nicht weiß, was daran falsch ist.
Evtl. sollte man dir eher sagen, was daran richtig ist - dann ist man schneller fertig ...
Im Ernst: Woher beziehst du deine Python-Kenntnisse? Hast du ein Buch? Ein Tutorial? Lernst du es in der Schule? Arbeitet dein Tutorial/Buch/Schule auch mit Python 3.x?
Auch wenn es mit deinem Code nichts zu tun hat: Warum nutzt du keine finale Version, z.B. 3.1?
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:21
von nomnom
Außerdem ist bei Python 3k `print` eine Funktion, kein Statement mehr:
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:25
von kRew
numerix hat geschrieben:kRew hat geschrieben:Vielleicht könnt ihr mir helfen ihn zu korregieren, da ich nicht weiß, was daran falsch ist.
Evtl. sollte man dir eher sagen, was daran richtig ist - dann ist man schneller fertig ...
Im Ernst: Woher beziehst du deine Python-Kenntnisse? Hast du ein Buch? Ein Tutorial? Lernst du es in der Schule? Arbeitet dein Tutorial/Buch/Schule auch mit Python 3.x?
Auch wenn es mit deinem Code nichts zu tun hat: Warum nutzt du keine finale Version, z.B. 3.1?
Wir arbeiten mit 3.x in der Schule. Jedoch möchte ich gerne etwas vorarbeiten und da unser Lehrer sehr sehr langsam ist mach ich das lieber selbst.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:27
von Xynon1
@kRew
Es ist aber kein Vorarbeiten, wenn man mit einer unstable Programmiersprache arbeitet.
Die meisten hier arbeiten vermutlich mit 2.5 - 3.1
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:28
von BlackJack
Und man kann verschiedene Typen nicht einfach auf grösser oder kleiner Vergleichen. Das Skript besteht eigentlich nur aus Fehlern.

Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:34
von kRew
BlackJack hat geschrieben:Und man kann verschiedene Typen nicht einfach auf grösser oder kleiner Vergleichen. Das Skript besteht eigentlich nur aus Fehlern.

Also ich habe jetzt Python 3.1 gibt es denn eine einfache Lösung für das, was ich vor habe? Mir reicht ja eigentlich schon der Befehl für das generieren einer zufälligen Zahl, aber wenn ich "random.randint" ausprobiere sagt das Programm folgendes:
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Users/Stephan/Python/Python3.1/test.py", line 9, in <module>
random.randint(lower, upper)
NameError: name 'lower' is not defined
Vielleicht könnt ihr mir ein wenig unter die Arme greifen, da ich denke das so etwas "simples" nicht so viel arbeit ist.
p.s: Nein, das ist keine Hausaufgabe für den Unterricht.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:36
von nomnom
kRew hat geschrieben:BlackJack hat geschrieben:Und man kann verschiedene Typen nicht einfach auf grösser oder kleiner Vergleichen. Das Skript besteht eigentlich nur aus Fehlern.

Also ich habe jetzt Python 3.1 gibt es denn eine einfache Lösung für das, was ich vor habe? Mir reicht ja eigentlich schon der Befehl für das generieren einer zufälligen Zahl, aber wenn ich "random.randint" ausprobiere sagt das Programm folgendes:
Code: Alles auswählen
Traceback (most recent call last):
File "C:/Users/Stephan/Python/Python3.1/test.py", line 9, in <module>
random.randint(lower, upper)
NameError: name 'lower' is not defined
Hast du vorher die Variable `lower` definiert? Wenn nicht, dann ist bei dir was kaputt

Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:37
von Xynon1
Wie wäre es erst mal mit ein paar Grundlagen ?
Du musst dort Zahlen reinschreiben und keine undefinierten Variablen.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 19:54
von kRew
Also, ich möchte folgendes.
In diesem Code:
Code: Alles auswählen
gz="05"
tipp=input("Geben sie hier eine Zahl von 1-9 ein: ")
if tipp == "gz":
print ("Sie haben die richtige Zahl erraten")
elif tipp > "gz":
print ("Die von ihnen eingegebene Zahl ist zu klein")
elif tipp < "gz":
print ("Die von ihnen eingegeben Zahl ist zu groß")
input()
möchte ich, dass die Zahl 1-9 zufällig generiert wird.
Was muss ich dafür machen?
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 20:18
von cofi
Code: Alles auswählen
>>> lower = int(input("lower bound: "))
lower bound: 1
>>> upper = int(input("upper bound: "))
upper bound: 9
>>> import random
>>> random.randint(lower, upper)
8
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 20:48
von kRew
Und wie würde das aussehen?
wie kann ich denn das ergebnis von dem "random.randint" zur Variablen machen?
Kann einer mal ein Beispiel posten?
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 21:01
von numerix
Mein Tipp wäre: Akzeptiere die Vermittlungsgeschwindigkeit deines Informatiklehrers und beschäftige dich mit dem im Unterricht Vermittelten so gründlich, dass du das wenigstens richtig gut verstanden hast und anwenden kannst. Wenn du das geschafft hast, dann nimmst du dir mal das deutsche Tutorial vor und dann kannst du dir deine Fragen bald selbst beantworten.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 22:00
von kRew
So, ich glaube ich habs rausbekomme:
Code: Alles auswählen
lo= int("1")
up= int("10")
import random
gz =(random.randint(lo, up))
ti = int(input("Geben sie eine Zahl zwischen 1 u. 9: "))
if ti == gz:
print ("Sie haben die richtige Zahl erraten")
elif ti > gz:
print ("Die von ihnen eingegebene Zahl ist zu klein")
elif ti < gz:
print ("Die von ihnen eingegebene Zahl ist zu groß")
input("Press <enter> to exit")
Also bei mir kommt da zwar immer, dass meine Zahl zu klein bzw. groß ist, jedoch denke ich ist das der Beweis dafür, dass es funktioniert.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 22:05
von nomnom
kRew hat geschrieben:So, ich glaube ich habs rausbekomme:
Code: Alles auswählen
lo= int("1")
up= int("10")
import random
gz =(random.randint(lo, up))
ti = int(input("Geben sie eine Zahl zwischen 1 u. 9: "))
if ti == gz:
print ("Sie haben die richtige Zahl erraten")
elif ti > gz:
print ("Die von ihnen eingegebene Zahl ist zu klein")
elif ti < gz:
print ("Die von ihnen eingegebene Zahl ist zu groß")
input("Press <enter> to exit")
Also bei mir kommt da zwar immer, dass meine Zahl zu klein bzw. groß ist, jedoch denke ich ist das der Beweis dafür, dass es funktioniert.
Äh,
ist Unsinn, das ist verständlicher und kürzer:
Auch wenn die Variablennamen alle unschön zu lesen sind. Keiner weiß was sie bedeuten

Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 22:28
von kRew
nomnom hat geschrieben:kRew hat geschrieben:So, ich glaube ich habs rausbekomme:
Code: Alles auswählen
lo= int("1")
up= int("10")
import random
gz =(random.randint(lo, up))
ti = int(input("Geben sie eine Zahl zwischen 1 u. 9: "))
if ti == gz:
print ("Sie haben die richtige Zahl erraten")
elif ti > gz:
print ("Die von ihnen eingegebene Zahl ist zu klein")
elif ti < gz:
print ("Die von ihnen eingegebene Zahl ist zu groß")
input("Press <enter> to exit")
Also bei mir kommt da zwar immer, dass meine Zahl zu klein bzw. groß ist, jedoch denke ich ist das der Beweis dafür, dass es funktioniert.
Äh,
ist Unsinn, das ist verständlicher und kürzer:
Auch wenn die Variablennamen alle unschön zu lesen sind. Keiner weiß was sie bedeuten

Eine kleine Übersetzung:
up = Höchste Zahl
lo = Niedrigste Zahl
gz = Geheim Zahl
ti = Tipp
Aber sonst ist es richtig oder?
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 22:49
von cofi
kRew hat geschrieben:Eine kleine Übersetzung:
up = Höchste Zahl
lo = Niedrigste Zahl
gz = Geheim Zahl
ti = Tipp
Macht es dich nicht stutzig, dass man eine Uebersetzung braucht, um den Code (problemlos) zu verstehen? Willst du so einen Code von anderen Leuten lesen?
1. Importe sollten ganz an den Anfang der Datei, wenn keine trifftigen Gruende dagegen sprechen.
2. Die Klammern um `random.randint..` sind ueberfluessig.
--
3. Du solltest deine Leerzeichen um Operatoren einheitlich links und rechts setzen, gleiches gilt bei Funktionsaufrufen (dort aber keine).
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 22:51
von Xynon1
...bei den anderen war cofi schon schneller
4. Bei einer Funktion, wie "print" in Python3 ist. Setzt man für gewöhnlich keine Leerzeichen zwischen Funktion und Klammer.
Re: Zahlen Rate Spiel
Verfasst: Mittwoch 17. November 2010, 23:19
von kRew
Okay, vielen dank für die Tipps

Ich werde in Zukunft versuchen mich an alle diese Sachen zuhalten und werde mal morgen noch ein wenig rumexperementieren. Ich hoffe dann ist es für alle einfacher es zu verstehen. Also schonmal danke für die Hilfe.