2016-01-22 1 views
1

Je viens de commencer à apprendre Python, quelqu'un peut-il m'aider. Par exemple, si j'avais une variable appelée 'speed' et que je voulais seulement qu'elle passe à 100 et pas au-dessus, et qu'elle ne descende pas en dessous de 0. Mais je veux aussi que le code fonctionne encore plus bas. mon code à ce jour:Python - Définition d'une limite sur une variable

import tkinter as tk 
speed = 80 
def onKeyPress(event, value): 
    global speed 
    text.delete("%s-1c" % 'insert', 'insert') 
    text.insert('end', 'Current Speed: %s\n\n' % (speed,)) 
    speed += value 
    print(speed) 
    if speed >= 100: 
     text.insert('end', 'You have reached the speed limit') 


speed = 80 

root = tk.Tk() 
root.geometry('300x200') 
text = tk.Text(root, background='black', foreground='white', font=('Comic Sans MS', 12)) 
text.pack() 

# Individual key bindings 
root.bind('<KeyPress-w>', lambda e: onKeyPress(e, 1)) 
root.bind('<KeyPress-s>', lambda e: onKeyPress(e, -1)) # 

root.mainloop() 

Comment puis-je obtenir la variable « vitesse » pour arrêter à 100 sans arrêter l'ensemble du code?

Répondre

5

Au lieu de changer immédiatement speed avec speed += value, procédez comme suit:

speed = min(max(speed+value, 0), 100) 

Ce premier produit la valeur la plus élevée entre speed+value et 0, donc si elle est négative, il restera à 0. Il a ensuite envoie cela à min() pour trouver la valeur la plus basse entre elle et 100, donc si elle est supérieure à 100, elle restera à 100.

Vous pouvez alors changer le che ck à if speed == 100:, car il ne va pas aller plus haut.

+1

aucune idée pourquoi -1 ... c'est une bonne réponse imho .. +1 –

3
if speed >= 100: 
    speed=100 
    text.insert('end', 'You have reached the speed limit')