Je suis en train d'essayer de demander à l'utilisateur de saisir une liste des prix pour certains éléments et de déterminer le nombre de ces articles qu'ils peuvent acheter avec un montant en dollars entré par l'utilisateur. Cependant, lorsque j'essaie de créer une boucle pour imprimer combien d'options ou de combinaisons, je reçois une erreur disant que je ne peux pas comparer un flotteur et une liste. Je pensais depuis que je convertitais les intrants des listes à un flotteur, je n'ai aucun problème à utiliser un opérateur de comparaison et je ne suis pas sûr de ce que je dois faire pour le réparer. P> P>
3 Réponses :
Vous avez mal compris quelques choses dans votre code. Vous avez raison que ce Vous pouvez ajouter A [flotteur (x) pour x dans les prix] code> peut convertir chaque élément de la liste en float. Cependant, je prendrai
si les prix <= dollar: code> comparent directement les prix
code> à
dollar (float) code>.
pour boucle code> ligne avant votre
si instruction code> de sorte que chaque élément sera itéré. p>
Voici aller simple: avis que nous devons: p>
prix code>. li>
dollar code> et remplacez chacun de ceux avec
1 code>. li>
1 code> s ensemble. li>
ul> p>
Nettoyer, plus pythonique de manière = +1.
Est-ce ce que vous vouliez que le programme fasse? Il y avait deux problèmes principaux avec votre programme d'origine. p> Tout d'abord, lorsque vous avez converti vos valeurs de chaîne en flotteurs, vous n'avez pas affecté la liste à une variable, il a donc été perdu le python instantané terminé la conversion. P> second, quand vous comparaient la liste des prix du flotteur au prix du dollar, vous n'avez pas itérai à chaque élément de la liste individuellement. Bien qu'il soit possible de comparer tous les éléments avec une seule chose à l'aide d'une commande 'Si X dans la liste:' ', cette commande ne correspond pas à la correspondance et ne traite que des équivalences, pas moins que ou égales à. P> < P> Enfin, j'ai modifié votre code afin qu'il se divise sur une virgule plutôt que sur des espaces, et il utilise une commande d'impression régulière plutôt qu'un format de chaîne. Ce sont des choix esthétiques, alors j'espère que vous pardonnerez les changements. Il n'y a rien de mal avec les commandes de format ou avec la division sur les espaces. P> J'espère que cela aide. p> p>
Tout simplement parce que
prix code> est une liste i> de what-you-pensée-comme i>
float code>'s. Quelle est votre production attendue quand même?
Votre compréhension de liste ne fait rien. Vous devrez stocker le résultat quelque part.
@Codered C'est une liste de cordes car elle n'a jamais changé.
@Klausd. c'est pourquoi j'ai ajouté "what-you-pensé-comme" i>
Essayez
prix = [flotteur (x) pour x en entrée (). Split ()]; dollar = flotteur (entrée ()); Imprimer (somme (1 pour x sur les prix si x <= dollar)) code>