2017-08-10 83 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 
相關問題