2017-10-06 5 views
2

Il dit que l'erreur est quand h (altitude) est entre 11000 et 25000, donc j'ai seulement posté le truc initial en dehors de mes boucles if et la boucle spécifique où le problème se passe. Voici mon code:Erreur: "ne peut pas multiplier la séquence par non-int de type 'float'"

import math; 
T = 0.0; 
P = 0.0; 
hString = ("What is the altitude in meters?"); 
h = int(hString); 
e = math.exp(0.000157*h); 

elif 11000 < h < 25000: 
    T = -56.46; 
    P = (22.65)*[(1.73)-e]; 
+2

Votre code me donne 'ValueError: invalide littéral pour int() avec base 10: 'Quelle est l'altitude en mètres?'. Pouvez-vous corriger votre exemple de code afin qu'il fonctionne lorsqu'il est copié-collé dans une console Python? –

+0

Veuillez écrire le code qui produit réellement l'erreur que vous signalez. Cette page sur l'écriture d'un fichier [MVCE] (https://stackoverflow.com/help/mcve) peut vous aider. –

Répondre

2

Les crochets dans la dernière ligne ([(1.73)-e]) créer une liste. Dans ce cas, il s'agit d'une liste avec un élément, à savoir (1.73)-e. J'imagine que vous vouliez que ceux-ci soient parens. Faites ce changement et cela fonctionnera.

La dernière ligne devient:

P = (22.65)*((1.73)-e); 
3

Lorsque vous utilisez des opérations mathématiques, vous devez être prudent avec les crochets.

P = (22.65)*((1.73)-e); #will be right way of using 

[ ] using will create a list which you, do not need in this program.

Voici un link qui vous aidera à apprendre beaucoup plus sur les conversions de type et la bonne utilisation des supports tout en faisant des mathématiques là-dessus.

également dans votre code vous n'avez pas utilisé

 hString =input ("What is the altitude in meters?"); 
     h = int(hString); 
entrée

vous permettra de prendre la valeur de l'utilisateur et int(your_input) vous aidera à convertir en entier

+0

'P = (22.65) *) (1.73) -e)' ne me semble pas juste. Vouliez-vous dire: 'P = (22.65) * ((1.73) -e)'? – SherylHohman

+1

@SherylHohman, édité maintenant merci –