Seite 1 von 2

Problem

Verfasst: Sonntag 28. Oktober 2012, 13:23
von pythonprogrammer

Code: Alles auswählen

secret = 1000
quess = 5
i = 0
while quess != secret: quess = input("Raten sie: ")
if quess < secret: print ("Zu Klein")
if quess > secret: print ("Zu Groß")
i = 1+1
print ("Super, Sie haben es in", i, "Versuchen geschafft")
ich habe diesen folgenden Code aber wenn ich es starte kommt das programm und aber nur ganze zeit raten sie dann geb ich eine zahl ein und es geht immer weiter es kommt kein zu klein gar nix..

Wer kann mir helfen bitte?

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 13:51
von Hyperion
Hallo,

Du weist schon, dass man in Python Blöcke durch Einrückung schachtelt? Wenn nein, solltest Du in Deinem Tutorial noch einmal die Grundlagen dazu angucken, wenn ja, überlege doch mal, was alles zur ``while``-Schleife gehört.

Wir haben hier übrigens spezielle Python-Code Tags im Forum. Da gibt es sogar einen speziellen Button ;-)

Man schreibt übrigens keine Leerzeichen hinter Funktionsaufrufe, wie Du es z.B. bei ``print`` gemacht hast.

Noch ein Hinweis zum Problem: Lass Dir mal den Typen des Rückgabewertes von ``input`` ausgeben. Der passt nicht zu Deinen Zahlwerten ;-)

Als letztes: Bitte wähle doch einen sinnvollen Namen für Beiträge! ``Problem`` gehört eher weniger dazu... mehr dazu findest Du auch in den FAQ (ganz oben auf jeder Seite verlinkt ;-) )

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 14:18
von pythonprogrammer
ich habe kaum ahnung vom ganzen und fange grade an mit programmieren.. und ich hab das tutorial von galileo computing das buch python und da steht nix von einrückung.. und entschuldige bitte meine dummheit

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 15:17
von Leonidas
Aber die Beispiele sind sicher eingerückt und genau so machst du dass in deinen Programmen dann auch.

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:08
von pythonprogrammer
jaa aber was bringt mir das einrücken es wird mir nicht als fehler angezeigt und da liegt jetzt auch nicht mein problem?

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:12
von BlackJack
@pythonprogrammer: Das Wort „Einrückung” kommt im OpenBook 17 mal vor. Und gleich beim ersten Vorkommen, im Kapitel „Grundlegendes zu Python-Programmen”, wird genau das beschrieben was Du darüber wissen musst.

Als Fehler kann es nicht angezeigt werden, weil der Rechner dann denken und selber programmieren könnte. Denken muss der Programmierer leider noch selber machen.

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:18
von pythonprogrammer
ich lerne nicht mit openbook also deswegen aber werd mir jetzt mal openbook vornehmen..

danke für die tipps erstmal

ps: http://openbook.galileocomputing.de/python/ ist das hier dein so genanntes openbook? damit lerne ich und von einrückung seh ich da kaum was

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:22
von gardiac2002
Ein paar Sachen, die mir hier aufgefallen sind:
  • 1.Benutze am besten keine deutschen Buchstaben wie ö, ü oder ß - das macht am Anfang nur Probleme

Code: Alles auswählen

if quess > secret: print ("Zu Gross")
  • 2.Einrücken: Alle Statements die in die Schleife gehören einrücken mit 4 Leerzeichen.
zum Beispiel:

Code: Alles auswählen

while quess != secret:
    quess = input("Raten sie: ")
    ...
  • 3.Mit deinem Zähler i = 1 + 1 wirst du immer auf das Ergebnis 2 kommen. Schau dir das mal genauer an.

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:27
von BlackJack
@pythonprogrammer: Wie gesagt, das Wort „Einrückung” kommt da 17 mal drin vor, unter anderem in dem genannten Kapitel. Und dann wohl in so ziemlich jedem Quelltextschnippsel der eine Schleife enthält. Und wenn man nur nach 'einrück' sucht, ohne Gross- und Kleinschreibung zu beachten, dann findet man noch wesentlich mehr Treffer. Und bei der Beschreibung von Schleifen steht ziemlich deutlich was das bedeutet. Ich lese Dir jetzt nicht Dein Buch vor, das mach mal bitte selbst… :roll:

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:41
von pythonprogrammer
@gardiac2002 Nützliche Tipps danke aber leider ist dadurch mein eigentliches problem nicht behoben denn das programm kommt nicht mal

Code: Alles auswählen

i = 1+1
print ("Super, Sie haben es in", i, "Versuchen geschafft")
@BlackJack ich habe genau den quelltext wie im Buch und trotzdem funktioniert das programm nicht komplett es kommen zwar keine fehler aber das programm macht nicht alles was es eigentlcih machen müsste

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:47
von BlackJack
@pythonprogrammer: Das steht ziemlich sicher nicht so in dem Buch. Neben der fehlenden Einrückung kann ich mir auch nicht vorstellen, dass dort ``i = 1+1`` steht. Das macht nämlich keinen Sinn.

Edit die Zeile mit dem `i` und das `quess` lässt einen ja fast vermuten, dass Du eine unauthorisierte Kopie von dem Buch hast, die aus einer Scannvorlage und OCR-Software entstanden ist. Oder Du bist ziemlich schlampig beim Abschreiben des Quelltextes.

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:49
von pythonprogrammer
schau doch nach es steht dort genau so

entschuldige dort steht i = i +1

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:53
von BlackJack
@pythonprogrammer: Ich habe nachgeschaut und es steht dort nicht so wie in Deinem ersten Beitrag, sondern korrekt eingerückt. Wäre auch ziemlich komisch wenn *so* etwas grundlegendes falsch gemacht würde und Du der erste bist, dem das auffällt. Das Buch gibt's schon etwas länger.

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 16:57
von pythonprogrammer
entschuldige bitte du hast recht! Aber jetzt aufeinmal kriege ich wenn ich das programm starte und eine zahl eingebe diesen fehler:

Code: Alles auswählen

Traceback (most recent call last):
  File "C:\Documents and Settings\Administrator\Desktop\erstes programm.py", line 6, in <module>
    if quess < secret:print("Zu Klein")
TypeError: unorderable types: str() < int()
was bedeutet das bitte?

habe den code jetzt mal so gemacht

Code: Alles auswählen

secret = 1337
quess = 0
i = 0
while quess != secret:
    quess = input("Raten sie: ")
    if quess < secret: print("Zu Klein")
    if quess > secret: print("Zu Gross")
    i = i + 1
print ("Super, Sie haben es in", i, "Versuchen geschafft")
ist das jetzt korrekt eingerückt?

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 17:15
von pythonprogrammer
Also jetzt müsst ihr mir mal bitte erzählen was der unterschied von python 2 zu 3 ist.. weil unter python 2 funktioniert das script plötzlich

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 17:50
von cofi
Das ist nichtmal im Ansatz der ganze Unterschied zwischen den beiden, aber der relevante Teil ist, dass

Python2 `input()` `eval(input())` in Python3 entspricht.

Da `eval` (fast) beliebigen Code auswertet, sollte man auf Python2 `input` verzichten.
Stattdessen sollte es in dem Fall `int(raw_input())` in Python2 und `int(input())` in Python3 heissen.

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 17:55
von pythonprogrammer
es wundert mich echt in python 3 funktioniert das script nicht und in python 2 funktioniert es plötzlich werde jetzt aufjedenfall python 2 weiterbenutzen

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 18:06
von anogayales
Les' doch mal bitte was hier die Leute posten. Dann wird es dich nicht wundern, dass dein Skript unter Python 3 so nicht funktioniert.

Grüße,
anogayales

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 18:07
von Leonidas
pythonprogrammer hat geschrieben:es wundert mich echt in python 3 funktioniert das script nicht und in python 2 funktioniert es plötzlich werde jetzt aufjedenfall python 2 weiterbenutzen
Wieso wundert dich das? Wenn Python 3 exakt wie Python 2 wäre, warum sollte es dann Python 3 heißen?

Re: Problem

Verfasst: Sonntag 28. Oktober 2012, 18:17
von BlackJack
@Leonidas: Die Begründung ist IMHO schlecht, denn üblicherweise hat man bei der gleichen Programmiersprache in unterschiedlichen Versionen ein gewisses Mass an Rückwärtskompatibilität. Das gilt ja sonst auch für Python mit Ausnahme des etwas härteren Schnitts zwischen 2 und 3.

Stell Dir mal das gleiche Programm in Java vor und das würde unter Java5 laufen und unter Java6 nicht mehr und das begründet jemand mit *dem* Satz. Eine ``while``-Schleife, ein paar Vergleiche und grundlegende Ein- und Ausgabe. Da ist nichts bei, von dem man erwartet, dass es in der nächsten Version der Sprache nicht mehr funktioniert.