2017-08-09 23 views
-1

CelsiusをFahrenheitに変換するコードを書きました。逆もまた同様です。変換する値を入力する前に変換する方法を選択できるようになりました。私は私はオプション2(FにC)を選択した場合には、オプション1Pythonの温度関数の問題

に私を戻します -

プログラムは、私は(CにFから行くための)オプション1を選択すると正常に動作しているようです明らかに何か間違っている(私はそれが私の条件付きTrueまたはFalseのステップと関係があると思われる)。ここで

は私のコードです:

def instructions(): 
    print('This is a program to convert from F to C or C to F') 

def chooser(): 
    choice = input('Choose:\n1 for Fahrenheit to Celsius\nor\n2 for Celsius to Fahrenheit\n--> ') 
    if choice is 1: 
     return True 
    else: 
     return False 

def F_userInput(): 
    fahrenheit = input('Please enter the temperature in Fahrenheit: ') 
    return float(fahrenheit) 

def f2c(temperature): 
    celsius = (temperature - 32) * 5/9 
    return celsius 

def C_userInput(): 
    celsius = input('Please enter the temperature in Celsius: ') 
    return float(celsius) 

def c2f(temperature): 
    fht = (temperature * 9/5) + 32 
    return fht 

def output(result): 
    print 'Your coverted temperature is', result 

def main(): 
    instructions() 
    chooser() 
    if True: 
     temperature = F_userInput() 
     result = f2c(temperature) 
    else: 
     temperature = C_userInput() 
     result = c2f(temperature) 
    output(result) 

main() 

注意してください - 私は、この変換を行うためのシンプルなプログラムを書くために管理している - しかし、私は、私は彼らより良い(とどのように特定の呼び出しするの理解を助けるための機能で周りのヌードリングしています他のものではない)。

PS私にこれを行うヒント/アドバイス/代替方法を教えてください。あなたの主な機能インサイド

+4

'真の場合:' 'あなたのelse'ブランチを選択するのだろうか? –

+0

int: 'choice == 1'を比較し、入力を整数に変換するには、この式を使用する必要があります。 – PRMoureu

+1

@PRMoureu - それは真です(' is'はオブジェクトの同一性、値の等価性をテストしています。 intを比較するためのツールですが、全体的な問題ではありません)。 –

答えて

0

、あなたの場合なステートメントは、単に変数を参照せずに

if True: 
    do_stuff() 

を持っています。 これをあなたのメインの方法で試してみてください。多分役立つでしょうか?

def main(): 
    instructions() 
    some_var_name = chooser() 
    if some_var_name == True: 
     temperature = F_userInput() 
     result = f2c(temperature) 
    else: 
     temperature = C_userInput() 
     result = c2f(temperature) 
    output(result) 

私はあなたが

if True: 
    do_stuff() 

を書くとき、このステートメントは常に実行すると思います。それが間違っている可能性はありません。そこに選択肢があるようにするには、前にプログラムで起こったことに基づいて真または偽になるブール変数に基づいてif文を評価します。 希望を解決する=)

+0

ニース、ニック - 完全な意味を作り、夢のように動作します! – JasonC

0

メインブロックのコードに chooser()の戻り値が格納されていません。したがって、チュー()から返された値がfalseであっても、それはで使用されていない場合はブロック チュー() 場合はtrue:#条件が常に真である 温度= F_userInput() 結果= F2C(温度) は他:#は 温度を実行することはありません= C_userInput() 結果= C2F(温度が)だと思いますどのような状況下では

+0

@ mintekhabはい - 追加情報をありがとうございます。あなたはかなり正しいですし、** chooser()**ステップで変数を追加し、** main()**ブロックで次の条件を追加することでこれを解決しました – JasonC

関連する問題