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