Wertevergleich PI PICO

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Nitro
User
Beiträge: 9
Registriert: Donnerstag 25. März 2021, 13:07

Hallo zusammen

Besten Dank für die Aufnahme.
Ich nutze den PI PICO seit zwei Tagen, ebenso die Sprache MicroPython.

Beim Lernen habe ich folgendes Problem, anbei der Code:

Code: Alles auswählen

while True:

    user_name = input ("Eine Zahl grösser als 100?")
    x = user_name
    if x > "100":
        print("Geht doch!")
    else:
        print("Echt jetzt!") 
         
Leider Funktioniert das nicht wirklich, wie man hier sieht:

Bild
https://www.bilder-upload.eu/upload/63b ... 674863.jpg

Da die Zahl 2 sicher kleiner ist als 100 habe ich im Code etwas falsch gemacht :=)
Fragt sich nur was?
Danke für eure Hilfe dazu.

Gruss Pascal
Nitro
User
Beiträge: 9
Registriert: Donnerstag 25. März 2021, 13:07

Scheinbar kann ich den Beitrag nicht ändern.
Hier ein Link vom Bild das Funktioniert:

https://ibb.co/pKyg3yn

Bild
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Einen String zu vergleichen ist auch etwas anderes als eine Zahl. Strings werden Zeichen für Zeichen mit ihrem Zeichencode verglichen und da ist "2" nunmal größer als "1", egal was sonst noch an Zeichen im String kommt.
Du mußt den String schon in eine Zahl umwandeln. Eine Zahl `user_name` zu nennen, ist sehr verwirrend. Warum nicht gleich x?

Code: Alles auswählen

while True:
    x = int(input("Eine Zahl grösser als 100?"))
    if x > 100:
        print("Geht doch!")
    else:
        print("Echt jetzt!")
Nitro
User
Beiträge: 9
Registriert: Donnerstag 25. März 2021, 13:07

Hallo Sirius3

Du hast natürlich recht, ich habe vergessen zu sagen das das eine Zahl ist.
Peinlich.

Besten Dank für deine Antwort!

Gruss Pascal
Nitro
User
Beiträge: 9
Registriert: Donnerstag 25. März 2021, 13:07

Ich habe nun gelernt wie man strings, int oder float vergleicht und auch einige Beispiele getestet.
Jedoch das was ich vergleichen möchte Funktioniert nicht, da mache ich etwas falsch.
Ich versuche zuerst rauszufinden ob der Input ein float ist, oder ob er aus Buchstaben oder Zeichen besteht.
Wenn es eine Zahl oder eine Fliesskommazahl ist dann setze ich den Wert auf float um weiter zu vergleichen.
Jedoch scheitere ich schon bei diesem Vergleich: if x == (float):

Wie sollte ich dies vergleichen?
Anbei der Testcode:

Code: Alles auswählen

while True:
    x = (input("Eine Zahl grösser als 100?"))
    if x == (float):
        print("Ist das eine Zahl?")
    else:
        x = float(x)
        if x > 100:
            print("Geht doch!")
        else:
            print("Echt jetzt?")
Ich habe noch kein guter MicroPython Lern Kurs in Deutsch als PDF gefunden, eventuell weiss da jemand was passendes.
Bis jetzt habe ich alles aus Beispielen zusammengesucht.

Gruss Pascal
Zuletzt geändert von Nitro am Sonntag 28. März 2021, 19:28, insgesamt 1-mal geändert.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Ein String ist niemals gleich dem Datentyp float. Und wenn das funktionieren würde, was soll das denn auch für eine Logik sein? Erst testest Du ob der String x eine Zahl enthält, und wenn nicht, wandelst Du x in eine Zahl um?

Du brauchst dafür Exceptionhandling. Du versuchst, x in eine Zahl umzuwandeln, und falls das schief geht, gibst Du Deinen Text aus.

Code: Alles auswählen

while True:
    eingabe = input("Eine Zahl grösser als 100?")
    try:
        x = float(eingabe)
    except ValueError:
        print("Ist das eine Zahl?")
    else:
        if x > 100:
            print("Geht doch!")
        else:
            print("Echt jetzt?")
Nitro
User
Beiträge: 9
Registriert: Donnerstag 25. März 2021, 13:07

Hallo SIrius3

Das was du sagst wie auch dein Beispiel ist absolut Plausibel, macht natürlich Sinn und ich versteh es auch.
Auch wenn ich andere Beispiele im Netz ansehe geht es mir so.

Nur habe ich noch Probleme Lösungen zu finden von Sachen bei dem ich noch keine Beispiele gesehen und gesammelt habe.
Ich muss mich da wirklich schlau machen, leider kann ich kein Englisch.

Danke für deine Hilfe
Antworten