2016-04-30 3 views
-2

以下のコードは、不要な "None"ステートメントを返しています。私は解決策を見つけることを望んで他の質問を検索したが、私はそれを把握することはできない。どんな助けもありがとう。Python - 不要な "None"ステートメントを返すコード

def int_mult(no1,no2): 
    try: 
     no3 = int(no1) 
     no3 = int(no2) 
    except ValueError: 
     return print("Error: Invalid Argument Type") 
    no1 = int(round(no1)) 
    no2 = int(round(no2)) 
    return (no1 * no2) 



print (int_mult(4.49,"apple")) 
+2

何を返すのですか? 'print'がNoneを返すので、それは*正確に*必要なものです。それが失敗した場合、戻り値の出力を停止しますか? – CodenameLambda

+0

"Error:Invalid Argument Type"とヒットした場合は、 "None"も印刷しないようにします。それは何をしているのですか? printステートメントを変更せずに、関数の内部だけで作業する方法がありますか? – user148615

答えて

2

実際には例外を発生させることをお勧めします。 5行目で

def int_mult(no1, no2): 
    try: 
     return int(no1) * int(no2) 
    except ValueError: 
     raise TypeError("Invalid Argument Type") 


try: 
    print(int_mult_(4.49, "apple")) 
except TypeError as e: 
    print(", ".join(e.args)) 
+0

こんにちは助けてくれてありがとう、私はそれが機能内ではなく、印刷ステートメントだけで変更することでこれを達成する方法があるのだろうか? – user148615

+0

その後、 'raise TypeError("無効な引数型 ")を' return "型の無効な引数型に置き換えます。しかし、これはコーディングの良いスタイルではなく、返される値を一貫性のあるものに保つ必要があります(与えられたタイプのセットが、値に関係なく毎回同じタイプを返すか、例外を発生させるような方法で) 。 – CodenameLambda

0

あなたが言う:

return print("Error: Invalid Argument Type")

これは、印刷機能で文字列を返すためのpythonを教えてくれありません。 これは、pythonにprint関数を返すように指示します。

おそらくこれはそれがより明確になります:あなたの最後の行では

あなたが書いた:

print (int_mult(4.49,"apple")) 

だから、最初のpythonはint_mult()関数を実行し、関数は、その後

print("Error: Invalid Argument Type") 

を返します。あなたの最後の行で注文したように、あなたのInt_mult()関数が返すものとまったく同じです。 Python用には、次のようになります。

print (print("Error: Invalid Argument Type")) 

この行でPythonは最初の関数print("Error: Invalid Argument Type")を実行し、文字列を出力します。その後、Pythonはのprint(のprint( "Error:Invalid Argument Type")を実行し、Noneまたは何か<function house at 0x7f494763abf8>のようなものを返します。私は私があなたを助けていることを願っています)

;私はあなただった場合

私はちょうどライン5

print (int_mult(4.49,"android")) 

return ("Error: Invalid Argument Type") 

とあなたの最後の行

に変更します。

関連する問題