Wie sage ich es in Python ? (Einsteigerfragen)

  • Hallo,


    du willst also wissen, wie oft du `verr` von zahl abziehen bzw. dazu addieren kannst, damit der Rest möglichst nahe an Null ist?



    `number` ist die Ausgangszahl, `value` die Zahl, um die jeweils verringert / erhöht werden soll. Die Funktion geht implizit davon aus, das `value` positiv ist (sonst stimmt u.U.) das Ergebnis nicht.


    Gruß, noisefloor

  • noisefloor ich weiss nicht so ganz genau was du da berechnen willst, aber das sieht vom Ergebnis her nach nix anderem als Modulo aus, gespiegelt am Vorzeichen. Das koennte man zB so bauen:


    Code
    math.copysign(abs(x) % diff, x)

    Aber wie gesagt, ich glaube nicht, dass das dem TE wirklich hilft. Und es passt auch nicht zu deiner Beschreibung, das waere ja eher


    x // diff

    Kein Support per PN! Von Hilfestellung sollen alle profitieren!

  • @__deets__ : Alles klar; das vorige Beispiel mit ABS hilft mir aber trotzdem noch in anderen Fällen^^. Aber stimmt schon, da geht wohl leider nicht viel mehr...


    (Für alle, denen der Hintergrund interessiert: Ich programmier grad an einem kleinen Jump'n Run und will eine "Reibung" bzw. Widerstand des Charakters einbauen, wenn er sich bewegt. Die "Reibung" soll natürlich irgendwann stoppen, weshalb die "0"-Bedingung genauso wichtig ist wie der konstante Wert davon... Die "zahl" ist quasi der Wert der neuen Position, die der Charakter nach der Bearbeitung erhalten soll...


    Ohne Reibung läuft der Charakter bis in alle Ewigkeit in dieselbe Richtung, ohne konstanten Abzug braucht der Charakter Ewigkeiten zum Bremsen und Stillstehen (wenn ich nicht den Wert irgendwann "hart" auf 0 stelle, aber das wär wieder unelegant), und ohne Null-Bedingung würde er plötzlich irgendwann rückwärts laufen oder hin- und herruckeln; da darf natürlich nichts davon passieren^^...)


    __deets__ hat es ja schon korrekt anmerkt: Will ich mit einem konstant Wert abziehen, werde ich wohl um eine Fallunterscheidung nicht herumkommen^^... Ich dachte wohl, eventuell gibts da einen "Trick 17" o.Ä., den ich noch nicht kenne aber anderen bekannt ist^^...

  • Bei Spielen kommt es natuerlich oft vor, dass man genau an solchen Stellen tunt, und ggf. nicht das macht, was die Physik da will. Aber normalerweise sollte Reibung proportional zur Geschwindigkeit sein, also faktisch eine Multiplikation. Unterhalb eines bestimmten Schwellwertes sollte man dann natuerlich auf 0 setzen. Aber das waere dann doch eher eine einfache Multiplikation. Und noch ein Tipp: wenn man so pseudo-physikalische Bewegung macht, dann ist es oft trotzdem angezeigt, mit floating points zu arbeiten, aber dann zur Darstellung einfach zu diskretisieren, also auf die Pixel-Positionen.

    Kein Support per PN! Von Hilfestellung sollen alle profitieren!

  • Guten Tag,

    ich bin dabei für die Uni einen GPIO Emulator mit Python zu programmieren.

    Es geht darum eine Ampelschaltung zu simulieren. Dafür habe ich schon einen Schalter zu auslösen programmiert. Nun soll ich laut aufgabenstellung noch einen zweiten Schalter zum beenden der Anwendung erstellen. Das war auch kein Problem. Mein Problem liegt nun darin , dass ich als Vorgabe habe das ganze mit einem Modul und dem Befehl exit() durchzuführen. Ich verstehe nun nicht, was ich tun muss, um den Schalter mit dem Modul bzw dem befehl zu verknüpfen. Wenn ich das ganze mit in die while schleife setze funktioniert die ganze anwendung nicht mehr.

    schönes Wochenende