0
votes

Obtenir une erreur lors de la tentative d'utilisation de l'opérateur <= pour deux variables

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. XXX

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.


5 commentaires

Tout simplement parce que prix est une liste de what-you-pensée-comme float '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"


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))


3 Réponses :


1
votes

Vous avez mal compris quelques choses dans votre code. Vous avez raison que ce [flotteur (x) pour x dans les prix] peut convertir chaque élément de la liste en float. Cependant, je prendrai @KLAUSD SLAI "Votre compréhension de la liste ne fait rien. Vous devrez stocker le résultat quelque part." Et aussi, ce que vous " faire ici si les prix <= dollar: comparent directement les prix à dollar (float) .

Vous pouvez ajouter A pour boucle ligne avant votre si instruction de sorte que chaque élément sera itéré. xxx


0 commentaires

2
votes

Voici aller simple: xxx

avis que nous devons:

  • Assurez-vous que toutes les entrées sont converties en flottant.
  • stocker le résultat de la compréhension de la liste dans une variable prix .
  • Filtrez tout ce qui précède dollar et remplacez chacun de ceux avec 1 .
  • Somme tout le 1 s ensemble.

1 commentaires

Nettoyer, plus pythonique de manière = +1.



0
votes

Est-ce ce que vous vouliez que le programme fasse? XXX

Il y avait deux problèmes principaux avec votre programme d'origine.

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.

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> 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.

J'espère que cela aide.


0 commentaires