Mettre une boucle For (in range) dans une condition If

Résolu/Fermé
Oxy_ Messages postés 2 Date d'inscription mardi 22 mars 2022 Statut Membre Dernière intervention 23 mars 2022 - 22 mars 2022 à 23:04
Oxy_ Messages postés 2 Date d'inscription mardi 22 mars 2022 Statut Membre Dernière intervention 23 mars 2022 - 23 mars 2022 à 11:55
Bonsoir,

Je commence à programmer sur python et suis bloqué sur le problème décrit dans le titre : je voudrai mettre une boucle
for in range
... dans une condition
if


Voici mon programme :

Pour expliquer rapidement, le programme est bloqué par
while
tant que l'utilisateur ne rentre pas une réponse attendue (Q sert de condition pour bloquer while). Le nombre de réponses attendues est
m
et les réponses sont dans
liste
.
ex : si m=4, liste = ['1', '2', '3', '4']

liste = []
  for o in range(m):
    liste.append(str(o+1)) #je mets str() car la sortie de input() est une variable de type string
  
Q=0
while Q!=1:
    réponse=input('>')
    if (??): 
      Q+=1


Je voudrai mettre dans dans la condition
if
ligne 8 quelque chose du genre :

for x in range(m):
   liste.pop(x+1)


Cependant je ne sais pas comment mettre une boucle for dans une condition if, d'où mon post sur ce forum !
Merci d'avance !

1 réponse

jee pee Messages postés 39895 Date d'inscription mercredi 2 mai 2007 Statut Modérateur Dernière intervention 30 juin 2024 9 245
Modifié le 23 mars 2022 à 09:06
Bonjour,

Je n'ai pas vraiment saisi ce que tu veux faire. Tester la réponse de l'utilisateur par rapport aux valeurs de la liste ? Si c'est le cas :
m = 4
liste = []
for o in range(m):
    liste.append(str(o+1)) #je mets str() car la sortie de input() est une variable de type string
print(liste)
  
while True:
    reponse=input('>')
    if reponse in liste:
        break
print('Saisie correcte') 


while True
est une boucle infinie.
break
sert à sortir de la boucle
while
.

On pourrait aussi se passer de créer la liste :
while True:
    reponse=int(input('>'))
    if reponse in range(1,m+1):
        break
print('Saisie correcte', reponse)

comme on convertit l'input en int() suivant la rigueur du code nécessaire, on pourrait avoir besoin de gérer les erreurs si on ne saisit pas un nombre (avec try: except:)


1
Oxy_ Messages postés 2 Date d'inscription mardi 22 mars 2022 Statut Membre Dernière intervention 23 mars 2022
23 mars 2022 à 11:55
Oui c'est bien ce que je voulais faire !

J'ai cherché beaucoup trop compliqué alors que la réponse était toute simple. Je retiens également le
break
, très pratique !

Merci beaucoup je vais pouvoir continuer mon programme !
0