2015-09-24 5 views
2

Je suis relativement nouveau en programmation et j'ai décidé de commencer avec Python comme entrée. Quoi qu'il en soit, je n'arrive pas à comprendre pourquoi ce script de conversion de température que j'ai écrit ne fonctionne pas.Convertisseur de température Python simple

def convert_to_fahrenheit(celsius): 

    c = celsius 
    f = c * 9/5 + 32 
    print '%r Celsius, converted to Fahrenheit, is: %r Fahrenheit.' % c, f 


def convert_to_celsius(fahrenheit): 

    f = fahrenheit 
    c = (f - 32) * 5/9 
    print '%r Fahrenheit, converted to Celsius, is: %r Celsius.' % f, c 


def convert(): 

    print 'To convert a temperature from Celsius to Fahrenheit:' 
    cels = raw_input('CELSIUS: ') 
    print '' 
    convert_to_fahrenheit(cels) 

    print '' 
    print 'To convert a temperature from Fahrenheit to Celsius:' 
    fahr = raw_input('FAHRENHEIT: ') 
    convert_to_celsius(fahr) 


convert() 

Il retourne un TypeError:

Traceback (most recent call last): 
    File "C:/Users/Brandon/PycharmProjects/IntroTo/Ch1/Exercises.py", line 32,  in <module> 
    convert() 
    File "C:/Users/Brandon/PycharmProjects/IntroTo/Ch1/Exercises.py", line 24,  in convert 
    convert_to_fahrenheit(cels) 
    File "C:/Users/Brandon/PycharmProjects/IntroTo/Ch1/Exercises.py", line 8,  in convert_to_fahrenheit 
    f = c * 9/5 + 32 
TypeError: unsupported operand type(s) for /: 'str' and 'int' 
+0

Vous devriez probablement inclure des exceptions lorsque vous exécutez le programme. Et si vous avez une idée du problème, écrivez-y aussi. –

+1

Désolé, je suis nouveau. Je reçois "TypeError: type (s) d'opérande non supporté (s) pour /: 'str' et 'int'" – xponent

+1

C'est génial que vous ayez ajouté plus d'informations sur votre question! Néanmoins, la façon préférée de le faire est d'éditer votre message. –

Répondre

1

Un problème est que vous passez et chaîne aux deux premières fonctions, mais attendez-vous à être un flotteur. Vous pouvez le résoudre en convertissant la valeur que vous obtenez de la chaîne à float. Vous devriez faire

c = float(celcius) 

dans la première fonction, et

f = float(farenheit) 

dans le second.


Une autre prblem est que vous devez mettre des parenthèses autour (c, f) et (f, c) pour % fonctionne correctement.


Et encore une chose que vous voulez probablement faire est de demander si l'utilisateur veut convertir pour cel à loin ou l'inverse. Vous pouvez le faire en utilisant if:

def convert(): 

    user_input = raw_input('From what do you want to convert?: ') 

    if user_input == 'celsius': 
     print 'To convert a temperature from Celsius to Fahrenheit:' 
     cels = raw_input('CELSIUS: ') 
     convert_to_fahrenheit(cels) 

    elif user_input == 'farenheit': 
     print 'To convert a temperature from Fahrenheit to Celsius:' 
     fahr = raw_input('FAHRENHEIT: ') 
     convert_to_celsius(fahr) 
+0

Merci! Il fonctionne maintenant :) – xponent

+0

Pour être encore plus fantaisiste, (OP), permettez-leur de taper une température avec des unités, par ex. "33 C", "-4,6 F". Puis analyser l'unité et appeler la fonction de conversion correspondante. Seulement s'ils ont oublié l'unité, demandez-leur pour quelles unités? – smci

+0

@smci Oui, ce serait bien, mais laissons la mise en œuvre à l'OP :) –