ne peut pas se multiplier séquence par des non-int de type 'float'
niveau: débutant
pourquoi je reçois le message d'erreur "ne peut pas se multiplier séquence par des non-int de type 'float'"?
def nestEgVariable(salary, save, growthRates):
SavingsRecord = []
fund = 0
depositPerYear = salary * save * 0.01
for i in growthRates:
fund = fund * (1 + 0.01 * growthRates) + depositPerYear
SavingsRecord += [fund,]
return SavingsRecord
print nestEgVariable(10000,10,[3,4,5,0,3])
merci
Baba
- Je préfère
SavingsRecord.append(fund)
au lieu de votreSavingsRecord += [fund,]
, il peut être plus rapide. - Double Possible de Pourquoi puis-je obtenir TypeError: ne peut pas se multiplier séquence par des non-int de type 'float'?
- ce post est daté de 2012. Cette question a été publié en 2010.
- Désolé! J'ai peur, j'ai mélangé les ids. Merci pour remarquer!
Vous devez vous connecter pour publier un commentaire.
devrait être:
Vous êtes multipliant 0.01 avec le growthRates des objets de la liste. La multiplication d'une liste par un nombre entier est valide (c'est surchargé sucre syntaxique qui permet de créer une longue liste avec des copies de l'élément de références).
Exemple:
Python permet de multiplier les séquences de répéter leurs valeurs. Voici un exemple visuel:
Mais il ne vous permet pas de le faire avec des nombres à virgule flottante:
Vous êtes multipling votre "1 + 0.01" fois le growthRate liste, pas l'élément dans la liste, vous êtes à itérer. J'ai renommé
i
àrate
et en l'utilisant à la place. Consultez la mise à jour de code ci-dessous:Dans cette ligne:
fund = fund * (1 + 0.01 * growthRates) + depositPerYear
growthRates est une séquence (
[3,4,5,0,3]
). Vous ne pouvez pas multiplier cette séquence par un flotteur (0.1). Il ressemble à ce que vous avez voulu mettre il y ai
.D'ailleurs,
i
n'est pas un grand nom de la variable. Envisager quelque chose de plus descriptif, commegrowthRate
ourate
.Dans cette ligne:
Je pense que tu veux dire ceci:
Lorsque vous essayez de multiplier un flotteur en growthRates (qui est une liste), vous obtenez l'erreur.
Parce que growthRates est une séquence (vous êtes même de l'itération d'elle!) et vous multiplier par (1 + 0.01), ce qui est évidemment un flotteur (1.01). Je suppose que tu veux dire
for growthRate in growthRates: ... * growthrate
?