Problème input vide
Résolu
preliator
-
preliator -
preliator -
Bonjour à tous,
Je souhaite créer un programme qui recherche des éléments dans une liste en fonction de valeurs maximum que tape l'utilisateur. Mon problème réside dans les Input NULL ou l'utilisateur ne rentre rien, que je ne sais pas (encore) gérer.
Une condition en bas affiche tout les éléments de la liste qui correspond aux critères donnés.
Voici mon code :
On part du principe que si l'utilisateur de rentre rien parmi les critères ci-dessus, c'est qu'il accepte n'importe quelle valeur.
Comme on peut le voir, j'ai tenté de me dépatouiller avec mes moyens pour gérer les Input vides, afin que la valeur soit toujours vrai au niveau de la condition. Cela ne marche évidemment pas (un entier ne peut être vide).
J'ai pensé à faire une condition "dynamique" qui n'interroge que les éléments entrés par l'utilisateur, malheureusement cela dépasse mes connaissances.
Merci à vous.
Je souhaite créer un programme qui recherche des éléments dans une liste en fonction de valeurs maximum que tape l'utilisateur. Mon problème réside dans les Input NULL ou l'utilisateur ne rentre rien, que je ne sais pas (encore) gérer.
Une condition en bas affiche tout les éléments de la liste qui correspond aux critères donnés.
Voici mon code :
pente_max_parcelles = input("pente max = ")
altitude_max_parcelle = input("altitude max = ")
orientation_max_parcelle = input("orientation max = ")
nom_proprietaire = input("nom_proprietaire = ")
compt = 0
mes_parcelles = [12, 128, 256, "POSTEL"], [8, 140, 16, "RADE"], [40, 1458, 30, "POLO"], [36, 540, 30, "RADI"], [69, 1240, 201, "XAVI"], [45, 30, 58, "SAID"]
if pente_parcelles == "":
pente_parcelles = int(pente_parcelles)
pente_parcelles = 99999
else:
pente_parcelles = int(pente_parcelles)
if altitude_parcelle == "":
altitude_parcelle = int(altitude_parcelle)
altitude_parcelle = 99999
else:
altitude_parcelle = int(altitude_parcelle)
if orientation_parcelle == "":
orientation_parcelle = int(orientation_parcelle)
orientation_parcelle = 99999
else:
orientation_parcelle = int(orientation_parcelle)
for raw in mes_parcelles:
if (raw[0] < pente_parcelles) and (raw[1] < altitude_parcelle) and (raw[2] < orientation_parcelle) and (raw[3] == nom_proprietaire):
print (mes_parcelles[compt])
else:
compt = compt + 1
On part du principe que si l'utilisateur de rentre rien parmi les critères ci-dessus, c'est qu'il accepte n'importe quelle valeur.
Comme on peut le voir, j'ai tenté de me dépatouiller avec mes moyens pour gérer les Input vides, afin que la valeur soit toujours vrai au niveau de la condition. Cela ne marche évidemment pas (un entier ne peut être vide).
J'ai pensé à faire une condition "dynamique" qui n'interroge que les éléments entrés par l'utilisateur, malheureusement cela dépasse mes connaissances.
Merci à vous.
A voir également:
- Problème input vide
- Supprimer page word vide - Guide
- Caractere vide - Guide
- Input signal out of range - Forum Ecran
- Coeur vide - Forum Facebook
- Formate pour taxer client frigo vide ✓ - Forum Matériel & Système
2 réponses
Bonsoir,
Ce que tu as fait devrait fonctionner pour les nombres, tout du moins si tu supprimes le cast des valeurs si les chaines sont vides.
Ceci
Pour la comparaison de nom_proprietaire, c'est un peu plus compliqué pour dire n'importe quelle chaine si rien n'est indiqué par l'utilisateur.
On peut imaginer faire une fonction qui retournera toujours True si rien n'est donné, et une autre qui comparera l'élément 3 avec ce qu'à indiqué l'utilisateur.
Ainsi pour tester il ne suffirait plus qu'à utiliser cette fonction.
Ce que tu as fait devrait fonctionner pour les nombres, tout du moins si tu supprimes le cast des valeurs si les chaines sont vides.
Ceci
pente_parcelles = int(pente_parcelles)plantera forcément si pente_parcelles est une chaine vide.
Pour la comparaison de nom_proprietaire, c'est un peu plus compliqué pour dire n'importe quelle chaine si rien n'est indiqué par l'utilisateur.
On peut imaginer faire une fonction qui retournera toujours True si rien n'est donné, et une autre qui comparera l'élément 3 avec ce qu'à indiqué l'utilisateur.
if not nom_proprietaire: func_comp_proprietaire = lambda value: True else: func_comp_proprietaire = lambda value: value == nom_proprietaire
Ainsi pour tester il ne suffirait plus qu'à utiliser cette fonction.
for raw in mes_parcelles: if ( raw[0] < pente_parcelles) and raw[1] < altitude_parcelle) and raw[2] < orientation_parcelle) and func_comp_proprietaire(raw[3]) ): print(raw)