2017-08-10 5 views
-3

Also habe ich versucht, einen Taschenrechner zu machen, der für x löst, aber ich muss überprüfen, ob eine Zeichenfolge eine ganze Zahl ist oder nicht. Ich versuche float("string") zu setzen, um zu überprüfen, aber wenn es nicht eine Fließkommazahl ist, zeigt es eine Fehlermeldung:
[ValueError: invalid literal for float():] Hier ist der vollständige Code:Wie überprüft man, ob eine Zeichenfolge eine ganze Zahl ist

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() 

Auch wenn Sie den Code laufen, Warum zeigt es einen Fehler für die letzte Zeile, solve_for_x()?

Und sorry, wenn dies ein Programm Anfänger/hat viele Fehler drin, ich vor einer Woche Python gerade begonnen: P

+1

Eine Zeichenfolge nie eine ganze Zahl ist, und einen int aus einem String-Parsing ist mit 'int' gemacht, nicht' float'. Wenn Sie überprüfen möchten, ob eine Zeichenfolge als Integer analysiert werden kann, versuchen Sie, sie mit "int" zu analysieren, und fangen Sie den ValueError ab, wenn er fehlschlägt. – user2357112

+0

('isdigit' wird häufig vorgeschlagen, aber falsch.' Isdigit' handelt davon, ob die Zeichen einer Zeichenkette Ziffern sind. ''-1'' gibt keine' isdigit'-Prüfung ab.) – user2357112

+2

Es gibt 2 * falsche * Dinge hier: 'if float (string_var0) == int oder float:' 1. Die 'oder' Bedingung funktioniert nicht so. 2. Dies ist nicht, wie eine Typprüfung durchgeführt wird – alfasin

Antwort

-1
def is_integer(n): 
    try: 
     int(n) 
     return True 
    except ValueError: 
     return False 
Verwandte Themen