2016-08-01 12 views
1
zu schweben

So ... Ich habe diese primitive Rechner, der auf meinem Handy fein läuft, aber wenn ich versuche, es auf Windows zu laufen 10 Ich erhalte ...Valueerror: konnte nicht Zeichenfolge konvertieren

ValueError: could not convert string to float

I weiß nicht, was das Problem ist, habe ich versucht mit raw_input, aber es funktioniert nicht Ether. Bitte beachten Ich bin grün und bin mir nicht bewusst die meisten Methoden für ähnliche

um ein Problem bekommen Zeichenfolge nur
num1 = float(input()) #take a float and store it 
chars = input() #take a string   and store it 
num2 = float(input()) 
+1

Sie sollten keine Zeichen in Ihrer 'input' haben und nicht' input' verwenden stattdessen 'raw_input'. –

+0

Ich habe nicht die Absicht, Zeichen einzugeben. Mein Code erlaubt mir nicht, auch nur einen Gleitkommawert einzugeben, er liest einfach die Zeile, überspringt sie und gibt mir einen ValueError. Ich werde das ganze Programm veröffentlichen, sobald ich auf meinen Laptop komme. – SOMEONEE

+0

Bitte geben Sie an, welche Eingaben fehlschlagen. (Welche Beispiele versuchen Sie, wenn "alles".) – glibdud

Antwort

2

Code konvertieren, die ganzen Zahlen wie in unten Aussage sind

num1 = float(input()) #take a float and store it ex 13 
print num1 # output 13.0 

, wenn Sie bieten 13 als Eingang wird die Ausgabe als 13.0 geben, aber wenn Sie SOMEONEE als Eingabe zur Verfügung stellen wird es ValueError

geben Und es ist das gleiche mit dem Fall raw_input() aber der Unterschied ist, dass standardmäßig raw_input() Eingabe als String nimmt und input() nimmt die Eingabe als das, was für die Funktion zur Verfügung gestellt

+0

Ich bin mir bewusst, dass die Eingabe von Strings einen ValueError gibt. Mein Programm erlaubt mir nicht einmal die Eingabe in die Variable, es überspringt einfach diesen Befehl. ABER ich habe genau den gleichen Code, der einen Taschenrechner auf meinem Telefon laufen lässt und es funktioniert, aber es funktioniert nicht auf meinem Desktop – SOMEONEE

+0

Bitte bearbeiten Sie die Frage und erklären Sie kurz, was Sie wollen? –

+0

http://StackOverflow.com/Questions/38702382/Touble-Running-this-Program – SOMEONEE

0

Ich denke, dies geschieht, weil in einigen Fällen ‚Input‘ enthält nicht-numerische Zeichen. Python ist intelligent und wenn eine Zeichenfolge nur Zahlen enthält, kann sie von String in Float konvertiert werden. Wenn die Zeichenfolge nicht numerische Zeichen enthält, kann Python sie nicht in einen Gleitkommawert konvertieren.

Man könnte dies ein paar Möglichkeiten beheben:

  1. Finden Sie heraus, warum und wenn es nicht-numerische Zeichen in der Eingabe und dann beheben.
  2. Überprüfen Sie, ob Eingang enthält nur Zahlen mit: isdecimal()
  3. Verwenden Sie ein try/except

isdecimal() Beispiel:

my_input = raw_input() 
if my_input.isdecimal(): 
    print("Ok, go ahead its all numbers") 

UPDATE: Zwei-Bit-Alchemist hatte einige Toller Rat in den Kommentaren, also habe ich es in meine Antwort aufgenommen.

+1

Die 'isdigit'-Methode ist hier nicht so gut, weil (1.) alles mit einem Dezimalpunkt diesen Test nicht besteht (Alternative:' isdecimal ') und (2.) Das OP benötigt Zahlen, mit denen man später rechnen kann, also kann man auch loslegen und werfen, wobei man bereit ist, 'ValueError' zu fangen (deine Option 3). –

+0

@ Two-BitAlchemist Danke für die Hinweise! Ich habe meine Antwort bearbeitet :) –

+0

Ihre Überschrift sagt immer noch "isdigit" Beispiel. Ich habe versucht, es zu beheben, aber deine letzte Bearbeitung hast du versehentlich zurückgerollt;) –

Verwandte Themen