2016-11-18 1 views
1

J'ai une affectation qui me force à ignorer certaines variables si une condition est remplie. Fondamentalement, je demande à l'utilisateur une entrée et lui dire les choix valides qu'il a, mais après un certain temps ce choix initialement valide n'est plus valide. Je pensais à faire quelque chose comme çaSi vrai, ignore désormais la variable en Python

while True: 
    choice = input('You can choose between: ', Choice1, Choice2, Choice3) 
    if choice == Choice1: 
     Choice1Counter +=1 
     break 
    elif choice == Choice2: 
     Choice2Counter +=1 
     break 
    elif choice == Choice3: 
     Choice2Counter +=1 
     break 
    else: 
     choice = input('You can choose between: ', Choice1, Choice2, Choice3) 
     continue 

Avec cela, je voudrais tout d'abord de toute « force » un choix valide et si l'entrée est un choix valide Je voudrais ajouter 1 au compteur de ce choix. Si le compteur atteint sa limite, je pensais faire quelque chose comme ça

if Choice1Chounter == 4: 
    #ignore Choice 1 for the rest of the Programm or until Choice1 is reset 

Cela devrait alors dire essentiellement que Choice1 est ignoré par le programme, ce qui aurait l'air un peu comme ça (dans mon esprit)

choice = Input('You can choose between: ', Choice1, Choice2, Choice3)

Avec qu'il devrait essentiellement « imprimer » sur ce qui suit lors de l'exécution du programme après Choice1Counter frappe ist limite

You can choose between: Choice2 Choice3

J'ai 82 entrées valides et ne peux pas vraiment définir toutes les 82! J'ai donc pensé à cela, mais je ne trouve pas de commande qui ignore simplement une variable pour le reste du programme.

+0

utiliser une variable (s) 'Vrai/false' pour contrôler les choix ignorer par exemple,' ignore = [Faux, faux, vrai] 'et vous pouvez l'utiliser pour décider l'utilisation de l'élément. – furas

+0

BTW: vous pourriez utiliser les listes 'choice [0]', 'choice [1], etc' et' choice_counter [0] ',' choice_counter [1] ', etc. et ensuite vous pouvez utiliser la boucle' for' pour faire quelque chose avec ces éléments. – furas

Répondre

4

Vous ne devriez pas utiliser de variables séparées pour cela, mais plutôt un dictionnaire et une liste de clés actuellement valides.

choices = ["Choice1", "Choice2", "Choice3", "Choice4"] 
counters = dict((choice, 0) for choice in choices) 

while choices: # exit when no choices left 
    choice = raw_input("Choose from %s > " % " ".join(choices)) # input in Py3 
    if choice in choices: 
     counters[choice] += 1 
     if counters[choice] == 4: 
      choices.remove(choice) 
    else: 
     print("That choice is not valid. Try again") 
+0

Merci beaucoup pour votre aide. Je l'ai juste essayé et ça fonctionne parfaitement. – Ron