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

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.