2017-03-04 117 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语句处理任何错误。如果尝试遇到错误,那么它将跳出该语句并执行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')