Ich habe einige Probleme in meiner Pygame-Anwendung, die ich mache. Es gibt Schaltflächen im Menü, die ändern, wie schnell meine Simulation läuft (indem Sie speed
in clock.tick(speed*10)
ändern). Dies verlangsamt jedoch auch die Geschwindigkeit, mit der die Menütasten reagieren. Wenn ich den Wert speed
irgendwo niedriger als 0,5 festlege, dauert die Geschwindigkeits- und Wiedergabe/Pause-Taste bis zu fünf Sekunden, um einen Klick zu registrieren. Also habe ich versucht, meinen eigenen Weg zu schaffen, dies zu umgehen:Wie man Kehrwert eines float in Python
speed = 1 # defined previously ingame
timeSlow = 0
timeSlowGoal = 0
while True: # game loop
if speed < 1:
timeSlowGoal = reciprocal(speed) # well here's my problem
else:
timeSlowGoal = -1
if timeSlowGoal != -1:
if timeSlow >= timeSlowGoal:
timeSlow = 0
# more code that actually does stuff
else:
timeSlow += 1
# doesn't match, try again
In Python gibt es Tricks wie int()
, string()
und float()
eine Variable zu ändern. Natürlich funktioniert reciprocal()
nicht. Gibt es irgendeine Art von Funktion wie diese, die das Reziproke einer Zahl bekommt (was in diesem Fall immer eine Dezimalzahl ist) oder muss ich nur ein paar schlaue Mathe machen, um es zu bekommen?
(natürlich, wenn all dies ist nicht erforderlich, und Sie haben eine bessere Lösung für mein erstes Problem lassen Sie mich wissen)
EDIT: Okay, gibt es eine sehr einfache Lösung für dieses, dass ich übersehen. 1/n ist immer der reziproke von n. Es gibt keine reziproke() Funktion, weil es so einfach ist. Das ist, was ich bekomme, wenn ich Mathe in der Grundschule vergesse.
Durch gegenseitige, tun Sie 1/n bedeuten? – jatinderjit
@jatinderjit Ja, das ist ein reziproker Wert von n wenn n eine ganze Zahl ist. Das ist einfach. Was ich brauche, ist ein Weg, um 2 von 1/2, 4 von 1/4 usw. zu bekommen. – NoRt9001
Nein, 1/n ist immer der Kehrwert (unabhängig davon, ob n ganzzahlig oder sogar irrational ist). 1/(1/2) ist 2. – jatinderjit