Große If schleife

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo
    Ich brauche einen code mit einer if schleife die checkt ob eine variable höher als 40 ist wenn das wahr ist dann wird es in eine andere variable eingespeist und wenn nicht dann wird gecheckt ob die andere variable über 40 ist dann wird mein befehl ausgeführt

    Danke im voraus

    Entschuldigt für die Rechtschreibung

  • http://if-schleife.de

    Und immer und immer und immer und immer wieder dieselbe Frage zu stellen, keinen Code zu liefern, und offensichtlich keinerlei Anstrengung zu unternehmen, das Problem durch *LERNEN* zu lösen - führt das nicht irgendwann zu ganz dollen Schamgefühlen?

  • Hallo EpicPi,

    dat is so einfach, dass man das von Dir gewünschte Verhalten sogar ganz ohne großes IF programmieren kann:

    Isch halt nur kein Paiton.


    Die einzige Zeile, die nicht ganz trivial ist, ist

    Code
    anderevariable := 40 < einevariable | meinBefehl(anderevariable > 40)

    Diese Zeile macht folgendes:
    Im ersten Teil wird einer Variablen ein Wert zugewiesen - aber nur dann, wenn eine Variable > 40 ist. Der Wert, der in diesem Fall zugewiesen wird, ist der Wert der Variablen.
    Ist der Vergleich nicht erfüllt, dann gibt es auch keine Zuweisung. Die Variable behält ihren aktuellen Wert.

    Da in Icon jede Zeile einen Erfolg vermelden möchte, wäre diese Zeile erfolglos. In diesem Fall kann man Alternativen anbieten. Solche Alternativen stehen hinter

    Code
    |


    Dort wird dann eine Funktion aufgerufen. Hmm ... nicht immer... Nämlich nur dann wenn der Vergleich erfüllt ist.

    Auf diese Weise kommt man da ganz ohne IFs aus.


    Übrigens: Es gibt keine IF-Schleife. Es gibt einen IF-Block, eine IF-Fallunterscheidung oder auch eine IF-Abfrage.

    Deswegen empfehle ich Dir weiterhin, Dich mal mit den Grundlagen der Programmiersprache zu beschäftigen, in der Du programmieren willst. Denn dieses Problem mit dem Vergleich, Wert von 40, Werte in Variablen setzen, das hattest Du vor kurzem schon einmal gestellt.


    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (23. Januar 2017 um 23:39)

  • Nicht nur einmal... Eigentlich will er ja irgendwas mit EntfernungSensoren machen. Aber mal kohärent ein Problem beschreiben & Code zeigen scheint nicht möglich.

  • Hallo Meigrafd,



    Andreas: Er möchte Python, kein Icon.


    Das ist mir durchaus bewusst. Wenn aber jemand ein Problem hat, keinen Code liefern kann, der einen Hinweis darauf gibt, sich mit Problem überhaupt mal beschäftigt zu haben, dann zeige ich ihm, wie das viel einfacher gehen kann. Mit dem Code wird er eh nichts anfangen können.



    Aber solange Er nicht selber was probiert und das probierte zeigt, kann er etwas vorgekautes eh nicht 1:1 kopiert werden.


    Solange er sich nicht mit irgendeiner Programmiersprache hinreichend beschäftigt, wird das eh nichts....

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

    Einmal editiert, zuletzt von Andreas (23. Januar 2017 um 23:05)

  • ich habe einen code mit 2 ultraschallsensoren und mein code soll erst weiter gehen wenn die sensoren beide einen abstand uber 40 erkannt haben dieser abstand ist aber versetzt. Mein code geht leider nicht

  • "Einen Code" hilf nicht. Es gibt hier im Forum tolle code-tags, damit kannst du den konkreten Code *ZEIGEN*, und dann kann man dazu etwas sagen. Das ist dir jetzt aber auch schon wiederholt gesagt worden. Was daran bereitet dir Schwierigkeiten, das umzusetzen?


  • mein code
    Bitte Helft mir

  • Da ist einiges im Argen.
    Angefangen mit der while Schleife unter der GPIO Initialisierung, die macht da wenig Sinn. Weiter gehts mit verschiedenen Einrückungseinheiten, gewöhne dir am besten an Pro Einrückung 4 Leerzeichen zu verwenden, nicht son MischMasch mit mal 1, mal 2, mal 4 ... Und das Chaos geht weiter in der letzten if Abfrage wo du noch mal die GPIO Initialisierung vornimmst?! Und was für ein komische Konstrukt hast du in der main() :-/ Kannst Du erklären was deiner Meinung nach die Verarbeitung in der main() bewirkt bzw machen soll?

  • Hallo EpicPl,

    und jetzt noch die Fehlermeldungen / Programmausgabe?

    Auf den ersten Blick ist folgender Ausschnitt sehr komisch:

    Code
    if Distance1 > 40:
               distr = (Distance1)
           elif distr > 40:
               pass
           if Distance2 > 40:
               distl = (Distance2)
           elif distl > 40:
               pass

    In bestimmten Fällen nutzt Du Variablen, die nicht belegt sind. Ist das von Dir so gewünscht?

    Beste Grüße

    Andreas

    Ich bin wirklich nicht darauf aus, Microsoft zu zerstören. Das wird nur ein völlig unbeabsichtigter Nebeneffekt sein.
    Linus Torvalds - "Vater" von Linux

    Linux is like a wigwam, no windows, no gates, but with an apache inside dancing samba, very hungry eating a yacc, a gnu and a bison.

  • Wenn du zwei Bedingungen verknüpfen willst, kannst du das mit "and" machen.

    Code
    if distanz_links < 40 and distanz_rechts < 40:
       tu_was
  • Mein Fehler:

    Traceback (most recent call last):
    File "/home/pi/Desktop/Projekt 09.py", line 89, in <module>
    main()
    File "/home/pi/Desktop/Projekt 09.py", line 65, in main
    elif distr > 40:
    UnboundLocalError: local variable 'distr' referenced before assignment

  • Na die Fehlermeldung ist doch recht klar. Du versuchst auf einen Wert zuzugreifen, den du noch gar nicht kreiert hast. Es gibt zwei Moeglichkeite, das zu umschiffen: den Wert vorher zu belegen, oder die Abfrage umzugestalten. Ich wuerde ersteres probieren.

    Und ich glaube du wirst nicht weit kommen, wenn du nicht ein Grundlagentutorial zu Python durcharbeitest. Wenn du programmieren sollest oder willst, musst du es lernen.

  • Erst mal die Misstände korrigieren... Vorschlag: http://codepad.org/5iCUX6aV
    Das ist Dein Script aus Beitrag#12 nur korrigiert und ohne die Kommentare - denn die sollten aufwerten, nichts offensichtliches beschreiben.
    Wie gesagt gab es viele Probleme in deinem Script - nicht zuletzt auch das distr innerhalb der main() nicht veränderbar war also die "elif" so eh nie funktioniert hätte.

    Nun geht es nur noch um die main()

    Da wäre es hilfreich zu erfahren was du überhaupt erreichen möchtest? Was sollen die if Abfragen bewirken bzw behandeln?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!