2017-10-21 1 views
0

私が作成した格付けプログラムを実行すると、それはうまくいきますが、テキスト "None"が表示され続け、なぜか分かりません。ここでは、コードです:input()は常に "None"を生成します

Grade_in=input(print("Enter Your Grade (Only Upper Case):")) 
if (Grade_in=='A+') : 
    print ("Numeric Grade is 4") 
elif (Grade_in=='A'): 
    print("Numeric Grade is 4") 
elif (Grade_in=='A-'): 
    print("Numeric Grade is 4.3") 
elif (Grade_in=='B+'): 
    print ("Numeric Grade is 3.3") 
elif (Grade_in=='B'): 
    print ("Numeric Grade is 3") 
elif (Grade_in=='B-'): 
    print ("Numeric Grade is 2.7") 
elif (Grade_in=='C+'): 
    print ("Numeric Grade is 2.3") 
elif (Grade_in=='C'): 
    print ("Numeric Grade is 2") 
elif (Grade_in=='C-'): 
    print ("Numeric Grade is 1.7") 
elif (Grade_in=='D+'): 
    print ("Numeric Grade is 1.3") 
elif (Grade_in=='D'): 
    print ("Numeric Grade is 1") 
elif (Grade_in=='D-'): 
    print ("Numeric Grade is 0.7") 
elif (Grade_in=='F') : 
    print ("Numeric Grade is 0") 
else : 
    print ("Invalid Grade..!") 

OUTPUT : 
Enter Your Grade (Only Upper Case): 
NoneB- 
Numeric Grade is 2.7 
+7

'print'関数を' input'関数の中から削除します。 – anupsabraham

答えて

4

この行は:

Grade_in=input(print("Enter Your Grade (Only Upper Case):")) 

は次のようになります。

Grade_in=input("Enter Your Grade (Only Upper Case):") 

あなたの元のコードは、これと同等です:

ret = print("Enter Your Grade (Only Upper Case):") 
Grade_in = input(ret) 

print常にNoneを返します。 、 そう retNoneなので、inputへの呼び出しはNoneを出力します。

inputは既にあなたが渡したものをプリントアウトするので、printはまったく必要ありません。

2

print()関数の戻り値の種類を見てみましょう:あなたが言うとき

>>> type(print()) 
=> <class 'NoneType'> 

だから

Grade_in=input(print("Enter Your Grade (Only Upper Case):")) 

inputは、自動的にそれがされます印刷、引数として文字列を取ります。あなたのプリントstatementが最初に実行され、Noneを返してからinputファンクションでプリントされるので、Noneもそこに印刷されます。

機能の中でprintというステートメントが追加で実行されました。それを取り除くだけで、必要に応じて動作します。

Grade_in=input("Enter Your Grade (Only Upper Case):") 
+0

改行( '\ n')を追加します。 –