2017-08-10 84 views
-3

所以我一直在试图做一个计算器来解决x,但我需要检查一个字符串是否是一个整数。我试图把float("string")来检查,但如果它不是一个浮点数,它会显示一个错误:
[ValueError: invalid literal for float():] 下面是完整的代码:如何检查一个字符串是一个整数

print "Please enter your equation. Put spaces after each term, like this: 5x -3 = 7. Also, use x as your variable." 
def solve_for_x(): 
    equ = raw_input("Enter your equation:") 
    var1 = equ.split('=') 
    var2 = equ.split() 
    string_var0 = str(var2[0]) 
    string_var1 = str(var2[1]) 
    string_var2 = str(var2[2]) 
    if float(string_var0) == int or float: 
     always_integer = float(string_var0) 
     always_coefficient = float(string_var1.split('x')) 
     if float(string_var2) == int or float: 
      sol = float(string_var2) 
      ans = (sol - always_integer)/always_coefficient 
      print 'x', "=",ans 
     else: 
      always_integer = float(string_var0) 
      always_coefficient = float(string_var1.split('x')) 
      always_coefficient2 = float(string_var2.split('x')) 
      final_coefficient = always_coefficient2 - always_coefficient 
      ans = always_integer/final_coefficient 
      print 'x',"=",ans 
    else: 
     always_integer = float(string_var1) 
     always_coefficient = float(string_var2.split('x')) 
     if float(string_var2) == int or float: 
      sol = float(string_var2) 
      ans = (sol - always_integer)/always_coefficient 
      print 'x', "=",ans 
     else: 
      always_integer = float(string_var1) 
      always_coefficient = float(string_var0.split('x')) 
      always_coefficient2 = float(string_var2.split('x')) 
      final_coefficient = always_coefficient2 - always_coefficient 
      ans = always_integer/final_coefficient 
      print 'x', '=',ans 
solve_for_x() 

而且,当你运行代码,为什么它会在最后一行显示错误solve_for_x()?

很遗憾,如果这是一个初学者程序/有很多,我刚开始Python的一个星期前在它的错误的:P

+1

字符串是从来都不是整数,并且从字符串解析的int用'int'完成,而不是'float'。如果你想检查一个字符串是否可以被解析为一个整数,试着用'int'解析它,如果失败,就捕获ValueError。 – user2357112

+0

('isdigit'经常被提示,但是错误的'isdigit'是关于一个字符串的字符是否是数字,''-1''没有通过'isdigit'的检查) – user2357112

+2

有2 *错*这里:'如果float(string_var0)== int或float:'1.这个''或'条件不起作用。 2.这不是如何进行类型检查 – alfasin

回答

-1
def is_integer(n): 
    try: 
     int(n) 
     return True 
    except ValueError: 
     return False 
相关问题