-1
votes

Tandis que la boucle soustrait

Je tente d'utiliser une boucle tandis que de soustraire de l'entrée puis d'afficher la quantité d'éléments qu'elle pourrait être basée sur l'entrée. Maintenant, il choisit de manière aléatoire la nourriture et le coût que je tente de l'obtenir pour correspondre à la nourriture choisi au hasard à la liste.

import random

money = input('Total money: ')
mi = int(money)

Food = ['Taco', 'Burrito', 'Nacho']
Price = [6, 4, 2]
Dict = {f:p for (f, p) in zip(Food, Price)}

RandomFood = random.sample(Food, 1)
RFS = str(RandomFood)

while mi >= 0:
    cost = Dict.RFS
    mi = mi - cost


5 commentaires

essayez coût = liste [rfs] ou coût = list.get (rfs, 0)


aléatoires aléatoires et rfs sont définis exactement une fois ; Leurs valeurs ne changent pas avec chaque itération de votre boucle, qui peut être remplacée par MI = MI% List [RFS] .


... N'appelez pas les dicts Liste ... ne les appelez pas aussi dicter .. et lisez la dicte et la liste. Vous ne pouvez pas accéder aux éléments d'un dict par dict.rfs ...


Lire: Docs.python.org/3/Tutorial/DataStructures.html#dictions < / a>


J'ai annulé votre dernier édition. Veuillez ne pas "corriger" votre question .. Cela invalide tout le temps passé par la PPL répondant à votre question. Les réponses ne correspondent plus à votre dernier modification - si vous avez un nouveau problème., Essayez de le résoudre et si vous avez besoin de poser une nouvelle question. Merci.


3 Réponses :


1
votes
import random

money = input('Total money: ')
mi = int(money)

Food = ['Taco', 'Burrito', 'Nacho']
Price = [6, 4, 2]
List = {f:p for (f, p) in zip(Food, Price)}

RandomFood = random.choice(Food)
RFS = str(RandomFood)

while mi >= 0:
    cost = List[RFS]
    mi = mi - cost
As @Patrick Artner suggested, choice() it's a better choice here (hah!).
List is a dictionary, to get values from a dictionary one must follow this syntax: dict[key]

6 commentaires

Non - nous utilisons aléatoireFood = aléatoire.choice (nourriture) pour obtenir un élément.


Ok d'ici comment afficherais-je chaque instance de nourriture "achetée"?


Pour obtenir Un élément par aléatoire à partir d'un iérien, vous n'utilisez pas une méthode qui produit des éléments uniques potentiellement multiples de celui-ci à la liste pour utiliser le 1er unique - vous utilisez la méthode qui vous donne simplement une élément. Lire: docs.python.org/3/library/random.html# aléatoire.choice


Ouais, le code saisit actuellement un élément par hasard, c'est pourquoi je demande comment puis-je le faire saisir une quantité variable d'éléments, puis sortit d'impression à ce qu'elle a attrapé et combien de chacun de chacun est saisi.


Vous devez modifier le deuxième paramètre de l'échantillon, puis: aléatoireFood = aléatoire.choice (nourriture, échantillons). Bien que avec une population de n = 3, c'est difficile.


@ B14D3R11 Il ne fera jamais que jamais à l'aide d'un échantillon - aléatoire. aléatoire.choices est en train de dessiner avec le dos. aléatoire.Choice obtient 1 de iTAKEFER. Voir la documentation - La documentation API est vraiment utile de comprendre la manière dont les trucs fonctionnent. Regardez également la documentation sur voir Comment spécifier combien de choses à dessiner de la ierable



1
votes

n'utilisez pas la nourriture aléatoire STR (aléatoire aléatoire) est déjà une liste incluse et la déplace en boucle. Chaque fois qu'il sera différent de la valeur xxx


1 commentaires

Ok qui fonctionne bien, j'ai ajouté si Mi sous MI = MI - Coût Cela ne l'achèterait pas et accorderait un numéro négatif. Mais je veux aussi que cela vérifie les autres numéros pour voir si ceux-ci peuvent être achetés au lieu d'une halte difficile à dire 4 argent restants



0
votes

Quelques choses:

Premièrement, vous convertissez l'échantillon en une chaîne de manière à créer des caractères supplémentaires autour de la nourriture, tels que "[" Taco "]" par opposition à "Taco". Vous devez utiliser Randomfood [0] au lieu de STR (Randomfood). P>

Deuxièmement, vous appelez l'élément de la liste de manière incorrecte. Vous devez utiliser la liste [RFS] au lieu de List.RFS P>

Donc, votre code doit ressembler à ceci: P>

import random

money = input('Total money: ')
mi = int(money)

Food = ['Taco', 'Burrito', 'Nacho']
Price = [6, 4, 2]
List = {f:p for (f, p) in zip(Food, Price)}

RandomFood = random.sample(Food, 1)
RFS = RandomFood[0]

while mi >= 0:
    cost = List[RFS]
    mi = mi - cost


0 commentaires