2016-11-21 2 views
0

Ich lese eine Nummer aus einer Datei p2.txt. Diese Datei contrains nur 1 Zahl, die eine ganze Zahl lässt 10.Lesen einer einzelnen Nummer aus einer anderen Datei mit Python

test_file = open('p2.txt', 'r') 
test_lines = test_file.readlines() 
test_file.close() 
ferNum= test_lines[0] 
print int(ferNum) 

sagen, wenn aber ich erhalte eine Fehlermeldung

print int(ferNum) 
ValueError: invalid literal for int() with base 10: '1.100000000000000000e+01\n' 

Ich kann sehen, dass es sie nur als eine Linie in Betracht zieht. Wie kann ich diese Zahl zu einer Variablen analysieren? irgendwelche Vorschläge?

Grüße
+3

Sie sollten die Eingabe einschließen, sonst erhalten Sie wilde Vermutungen – JuniorCompressor

Antwort

3

Das Problem ist, dass, obwohl der Wert der Zahl eine ganze Zahl (11) ist es in der wissenschaftlichen Schreibweise dargestellt ist, so dass Sie es als float zuerst zu lesen haben würden.

>>> float('1.100000000000000000e+01\n') 
11.0 

>>> int('1.100000000000000000e+01\n') 
Traceback (most recent call last): 
    File "<pyshell#4>", line 1, in <module> 
    int('1.100000000000000000e+01\n') 
ValueError: invalid literal for int() with base 10: '1.100000000000000000e+01\n' 

Sie können natürlich zuerst konvertieren zu einem float dann zu einem int danach.

>>> int(float('1.100000000000000000e+01\n')) 
11 
Verwandte Themen