2
votes

Arrondir le flottant à une décimale simple (problème spécifique)

Je suis très nouveau dans Python mais très intéressé par l'apprentissage. Pour un cours uni Python, je dois créer un programme qui convertit une température en degrés Celsius ou Fahrenheit, et affiche la conversion à la première décimale. Mon problème réside dans mes lignes d'impression.

Comme vous pouvez le voir dans mon code, j'ai essayé d'utiliser la fonction round () lors de la concaténation. Bien que j'aie tenté de convertir le serait float en str (), lorsque j'exécute mon programme, je reçois l'erreur suivante.

TypeError: le type str ne définit pas round em> méthode

pour la ligne suivante

print (round (str (temp), 1) + "degrés celsius =" + str (degF) + "degrés Fahrenheit.")

et de même pour la ligne d'impression dans mon bloc elif. Toute aide pour comprendre et résoudre le problème serait grandement appréciée.

temp=float(input("Enter a temperature value to convert: "))
unit=str(input("Convert to Fahrenheit or Celsius? Enter f or c: "))

if unit=="c" or unit == "C":
    degC=(temp)
    temp=(1.8*temp)+32
    print (round(str(temp), 1) + " degrees fahrenheit = " + str(degC) + " degrees Celsius. ")
elif unit=="f" or unit == "F":
    degF=(temp)
    temp=(temp-32)/1.8
    print (round(str(temp), 1)+ " degrees celsius = " + str(degF) + " degrees Fahrenheit. ")
else:
    print("you did not enter an f or c. Goodbye ")

Mes résultats doivent être arrondis à la première décimale.


0 commentaires

3 Réponses :


1
votes

Ne convertissez pas temp en chaîne. Gardez-le comme un flottant pour round . Transformez la résultante après round en une str pour la concaténation

str(round(temp, 1))


1 commentaires

Si je laisse temp comme un flottant, je ne peux pas concaténer avec les instructions de chaîne suivantes



0
votes

Vos opérations sont dans le mauvais ordre. Arrondir d'abord, puis convertir en chaîne:

print (str(round(temp), 1)+ " degrees celsius = " ...


0 commentaires

0
votes

À moins qu'il ne s'agisse d'un devoir en classe pour utiliser la fonction ronde, je ne pense pas que la fonction ronde soit nécessaire.

print ("%.1f degrees Celsius = %.1f degrees Fahrenheit" % (temp, degC))


0 commentaires