2017-08-13 19 views
1

次のコードを出力するとNoneが表示されますが、その理由はわかりません。 誰かがなぜそれなのか、それをどう修正できるのか説明できますか? コードは次のとおりです出力にNoneが表示されるのはなぜですか?

def randomQuestions(): 
     q1 = 1 
     q2 = 2 
     for i in range(1): 
      if random.randint(1,2)==1: 
       a1=int(input(print("Please Enter a Number that is not prime: ",end=""))) 
       if a1>1: 
        for i in range (2,a1): 
         if (a1%i)==0: 
          print("Correct",a1,"is Not a prime number") 
          break 
        else: 
         print("Incorrect",a1,"is a Prime number") 
       else: 
        print("Incorrect",a1,"is a Prime number") 
      else: 
       a2=int(input(print("Please Enter a Number that is positive: ",end=""))) 
       if a2>0: 
        print("Correct",a2,"is Positive") 
       elif a2==0: 
        print(a2,'Is neither Positive Nor Negative') 
       else: 
        print('Incorrect',a2,'is Not Positive') 
    randomQuestions() 

出力は次のとおりです。あなたがその内部の印刷機能を必要としないので、

Please Enter a Number that is not prime: None 

答えて

2

input機能は、すでに入力のためのメッセージを出力します。 print関数はNoneを返すため、Noneを表示します。

int(input("Please Enter a Number that is positive: ")) 

int(input(print("Please Enter a Number that is positive: "))) 

は、他の入力のためにそれを実行してください変更。

あなたが入力が新しい行に入力したい場合は、

int(input("Please Enter a Number that is positive: \n")) 
+0

@ayban答えが分かります:)しかし、今度は次のエラーが発生します。 TypeError:input()にキーワード引数がありません –

+0

これは本当です。あなたは 'end =" "も削除する必要があります。 – ayhan

+0

@aybanそれは働く:)今私は私が作ったエラーが何であるか理解している。事前に感謝:) –

0

を行うことができますprint文を削除してください。

def randomQuestions(): 
      q1 = 1 
      q2 = 2 
      for i in range(1): 
       if random.randint(1,2)==1: 
        a1=int(input("Please Enter a Number that is not prime: ")) 

        if a1>1: 
         for i in range (2,a1): 
          if (a1%i)==0: 
           print("Correct",a1,"is Not a prime number") 
           break 
         else: 
          print("Incorrect",a1,"is a Prime number") 
        else: 
         print("Incorrect",a1,"is a Prime number") 
       else: 
        a2=int(input("Please Enter a Number that is positive: ")) 

        if a2>0: 
         print("Correct",a2,"is Positive") 
        elif a2==0: 
         print(a2,'Is neither Positive Nor Negative') 
        else: 
         print('Incorrect',a2,'is Not Positive') 
+0

それを修正:)事前に感謝:) –

0

入力用に印刷ラッパーを使用する必要はありません。

https://docs.python.org/3/library/functions.html#input

また、先に進む前にNoneTypeチェックを行うには悪い考えではないかもしれませんが、以下のコードは、あなたが作業を取得する必要があります。

import random 


def randomQuestions(): 
    q1 = 1 
    q2 = 2 

    for i in range(1): 
     if random.randint(1,2) == 1: 
      a1 = int(input("Please Enter a Number that is not prime: ")) 
      if a1 > 1: 
       for i in range (2, a1): 
        if (a1 % i) == 0: 
         print("Correct", a1, "is Not a prime number") 
         break 
       else: 
        print("Incorrect", a1, "is a Prime number") 
      else: 
       print("Incorrect", a1, "is a Prime number") 
     else: 
      a2 = int(input("Please Enter a Number that is positive: ")) 
      if a2 > 0: 
       print("Correct", a2, "is Positive") 
      elif a2 == 0: 
       print(a2, 'Is neither Positive Nor Negative') 
      else: 
       print('Incorrect', a2, 'is Not Positive') 

if __name__ == '__main__': 
    randomQuestions() 
関連する問題