2017-03-04 3 views
-1

ここに私のコードがありますが、エラーが続きます。私は正常に非正当な整数を識別することができます。しかし、私が肯定的なものを入力した場合、私はこのエラーを受け取ります。TypeError:文字列の書式設定中にすべての引数が変換されるわけではありません。タイプ正の整数を入力するとエラーが発生する

inter=(input('Enter a positive integer:')) 
if not inter.isdigit(): 
    print('You did not enter a valid input!') 
else: 
    if(inter%2==0): 
     print('You entered an even number') 
    elif(inter%7==0): 
     print('You entered an odd number that is a multiple of 7') 
    else: 
     print('You entered an odd number that is NOT a multiple of 7') 
+0

'inter'は文字列です。あなたの' isdigit'を使用すると分かります。文字列の '%'は、法ではなくCスタイルの書式です。 – jonrsharpe

+0

ありがとうございました!しかし、私はまだ問題を解決するために何をしなければならないかわからない –

+0

数学的操作を試みる前に文字列を整数に変換する。 – jonrsharpe

答えて

-1
try: 
    inter=int((input('Enter a positive integer:'))) 
    if(inter%2==0): 
     print('You entered an even number') 
    elif(inter%7==0): 
     print('You entered an odd number that is a multiple of 7') 
    else: 
     print('You entered an odd number that is NOT a multiple of 7') 
except:  
    print('You did not enter a valid input!') 

これは、入力がintかそうでないかどうかを確認するためのより良い方法です。 try-exceptステートメントはエラーを処理します。 tryにエラーが発生すると、その文から抜け出しexcept文を実行します。したがって、入力がintにキャストされると、入力が文字列の場合、エラーがスローされます。

+1

ありがとう!私はその方法に精通しています。しかし、私はisdigit関数を使用しなければならなかった –

0
inter=(input('Enter a positive integer:')) 
if not inter.isdigit(): 
print('You did not enter a valid input!') 
else: 
if(int(inter)%2==0): 
    print('You entered an even number') 
elif(int(inter)%7==0): 
    print('You entered an odd number that is a multiple of 7') 
else: 
    print('You entered an odd number that is NOT a multiple of 7') 
関連する問題