Problem

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.
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

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?
Zuletzt geändert von Hyperion am Sonntag 28. Oktober 2012, 13:52, insgesamt 1-mal geändert.
Grund: Code in Python-Code Blöcke gesetzt
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

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 ;-) )
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Aber die Beispiele sind sicher eingerückt und genau so machst du dass in deinen Programmen dann auch.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

jaa aber was bringt mir das einrücken es wird mir nicht als fehler angezeigt und da liegt jetzt auch nicht mein problem?
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.
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

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
gardiac2002
User
Beiträge: 5
Registriert: Samstag 7. Juli 2012, 10:36
Wohnort: Wien

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.
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:
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

@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
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.
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

schau doch nach es steht dort genau so

entschuldige dort steht i = i +1
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.
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

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?
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

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
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

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.
pythonprogrammer
User
Beiträge: 13
Registriert: Sonntag 28. Oktober 2012, 13:17

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
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

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
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

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?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
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.
Antworten