HILFE!! Hausaufgabe/ zahlenrate programm!!

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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

dynasty-warriors hat geschrieben:p.s. was ist tryexcept??
Tritt bei der Ausführung eine Exception auf kann man diese Abfangen indem man sie mit try except umschliesst.

Code: Alles auswählen

try:
    raise Exception
    print 'ich werde nie ausgefuehrt'
except Exception:
    print 'abgefangen'
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

dynasty-warriors hat geschrieben:ôk vielen dank! ich habe jetzt das thema mit random verrstanden!!! vielen dank!!!


p.s. was ist tryexcept??
Ah du entwickelst tatsaechlich Interesse? Dann bin ich gern bereit zu helfen. Try-Except-Konstrukte verwendet man um Fehler (genauer: Exceptions) abzufangen.

Wenn der User zB keine Zahl sondern einen Text eingibt, kann bei bestimmten Operationen ein Fehler auftreten.

Beispiel:

Code: Alles auswählen

In [29]: x = input("I moag ne Zahl ham! ")
I moag ne Zahl ham! k
---------------------------------------------------------------------------
NameError                                 Traceback (most recent call last)

/home/psy/<ipython console> in <module>()

/home/psy/<string> in <module>()

NameError: name 'k' is not defined
...das Programm stuerzt also ab und das kann man abfangen:

Code: Alles auswählen

In [29]: try:
    x = input("I moag ne Zahl ham! ")
except NameError:
    print "Menno, i' will ne Zoahl, kee Buchstoab!"

I moag ne Zahl ham! k
Menno, i' will ne Zoahl, kee Buchstoab!
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

Statt input() sollte man vor 3.0 raw_input() verwenden. input() ist das gleiche wie

Code: Alles auswählen

eval(raw_input())
und überall, wo eval drinsteckt, ist etwas evil :twisted:
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

DasIch hat geschrieben:Erinnert mich irgendwie an Lisp:
"Ich hab nicht nichtmal if benutzt!!!1111einseinself"
Weil man es auch komplizierter mit ``cond`` machen kann?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Wieso kompliziert?
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Wegen der hohen Anzahl von Klammern, die zusätzlich zu ``if``nötig sind wenn es sich um ein simples if-then-else handelt. Man macht in anderen Sprachen auch kein ``switch/case`` nur weil man damit ein simples ``if`` ersetzen kann.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Benutzeravatar
str1442
User
Beiträge: 520
Registriert: Samstag 31. Mai 2008, 21:13

Vielleicht gibt der Benutzer auch mal "1j" ein.

Und cond, car, cdr & co > world ;)

@Thread: Schreib ordentlich und lern die SuFu zu benutzen (wobei die Anwendung jener vielleicht aufgrund der gewählten Bezeichnung eine Anwendung einer ähnlichen vorrausgehen muss), dann kannst du dir auch selbst in den Fuß schiessen ohne auf dich aufmerksam zu machen. Eigentlich ist es schon ziemlich bezeichnend, daß solche Threads immerwieder eröffnet werden, und zwar jedesmal mit ähnlichen Verhaltens und Ausdrucksweisen.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

Leonidas hat geschrieben:Wegen der hohen Anzahl von Klammern, die zusätzlich zu ``if``nötig sind wenn es sich um ein simples if-then-else handelt.
Das macht es vielleicht komplex oder bläht dass ganze(im Vergleich) auf aber kompliziert wird es dadurch nicht.
Bei einem Editor(z.B. Kate) mit brauchbarem Syntax Highlighting ist dass mit den Klammern auch kein Problem. Generell hat man dass nach einer Weile recht schnell gut drin, so gut dass ich schon dass ein oder andere mal erwischt habe bei Python die Klammer ebenfalls vor dem Funktionsnamen zu öffnen.

Letzendlich ist es natürlich dumm cond zu verwenden, wenn man nicht mehr braucht als if then else aber dass habe ich ja auch nicht bestritten. Ich fands nur seltsam cond kompliziert zu bezeichnen.
Benutzeravatar
nkoehring
User
Beiträge: 543
Registriert: Mittwoch 7. Februar 2007, 17:37
Wohnort: naehe Halle/Saale
Kontaktdaten:

Aber allgemein geht es hier ja sowieso nicht um Lisp, sondern um eine einfach loesbare Python-Aufgabe 8)
[url=http://www.python-forum.de/post-86552.html]~ Wahnsinn ist auch nur eine andere Form der Intelligenz ~[/url]
hackerkey://v4sw6CYUShw5pr7Uck3ma3/4u7LNw2/3TXGm5l6+GSOarch/i2e6+t2b9GOen7g5RAPa2XsMr2
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

BlackJack

Nein, kein Lisp. Aber vielleicht Factor. :-)

Code: Alles auswählen

#! /usr/bin/env factor
USING: combinators io kernel math math.order math.parser math.ranges random ;
IN: number-guessing

: ask-for-number ( -- n )  "Your guess: " write flush  readln string>number ;

: check-guess ( secret guess -- ? )
    over <=>
    { { +eq+ [ t "correct" ] }
      { +lt+ [ f "smaller" ] }
      { +gt+ [ f "greater" ] } } case
    "Your guess is " write write "." print ;

: loop ( n secret -- n )
    over number>string write ". try." print
    ask-for-number
    check-guess
    [ drop ] [ [ 1+ ] dip loop ] if ;

: main ( -- )
    1  100 [1,b] random  loop
    "Yeah!  You found it with " write  number>string write  " tries." print ;

main
apollo13
User
Beiträge: 827
Registriert: Samstag 5. Februar 2005, 17:53

@dynasty-warriors:
Du könntest auch "Python für Kids" lesen: http://www.amazon.de/Python-f%C3%BCr-Ki ... 827&sr=8-3

Das ist so geschrieben, dass sogar du es verstehen solltest.
Und es ist jedem hier egal, ob du auf deine Mutter schwörst, dieses Forum zu besuchen: Wir könnten darauf verzichten...
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

word.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

audax hat geschrieben:kein Lisp? Schade...
http://paste.pocoo.org/show/98039/
Mal aus meiner Sandbox rausgeholt. Irgendwie mag hier niemand Common Lisp sonderlich ;)

Und DasIch, ein Editor wie Kate ist als Lisp-Editor wenig geeignet. Ohne richtiges, semantisches Einrücken und farbliches Klammer-Level-Matching ist es vergleichsweise unangenehm zu programmieren.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Mal was anderes:
http://paste.pocoo.org/show/98060/

Immer nur Scheme ist ja auch doof...
nemomuk
User
Beiträge: 862
Registriert: Dienstag 6. November 2007, 21:49

lol, immer wieder lustig solche Threads zu lesen^^
INFACT
User
Beiträge: 385
Registriert: Freitag 5. Dezember 2008, 16:08

Wenn du eine Zufalls Zahl willst würde ich es Mit random probiern:

Code: Alles auswählen

import random
zahl=random.randint(1,100) #zufall zwischen 1 und 100
anzahl=1
while zahl != meineZahl:
    meineZahl=int(raw_input("Ich habe eine Zahl zwischen 1 und 100: rate "))
    if meineZahl==zahl:
        print "Richtig, die Zahl war", zahl , "Sehr gut, du hast es in", anzahl,"Versuchen geschafft"
    elif meineZahl<zahl:
        print"Sorry zu klein"
    elif meineZahl>zahl:
        print "Sorry zu gross"
    anzahl+=1
So jtz. stimmts gültig für python 2.5
Zuletzt geändert von INFACT am Montag 5. Januar 2009, 14:01, insgesamt 1-mal geändert.
[b][i]ein kleines game für die die lust haben http://konaminut.mybrute.com[/i][/b]
;-)
Benutzeravatar
BlackVivi
User
Beiträge: 762
Registriert: Samstag 9. Dezember 2006, 14:29
Kontaktdaten:

INFACT hat geschrieben:

Code: Alles auswählen

import random
zahl=random.randint(1,100) #zufall zwischen 1 und 100
anzahl=1
while zahl != meineZahl:
    meineZahl=raw_input("Ich habe eine Zahl zwischen 1 und 100: rate ")
    if meineZahl==zahl:
        print ("Sehr gut, du hast es in"+anzahl+"Versuchen geschafft")
    elif meineZahl<zahl:
        print("Sorry zu klein")
    else:
        print("Sorry zu gross")
Mhm... hast du's ausprobiert vorher...? Es funktioniert soooo nicht. Außerdem... solltest du dich an PEP8 halten, finde ich. Also... naja, ich fänds schöner. meineZahl muss vorher'n Wert kriegen, sonst ist es schwer eine Überprüfung zu machen, außerdem sollte die Eingabe'n int werden, sonst bringen die Vergleiche danach stets ein "Sorry zu gross"
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Und was soll das sein? Python 2.x? Python 3.x?

@audax: Clojure?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Antworten