2017-01-13 2 views
0

Wenn in while-Schleife zurückgegeben wird, wird die Schleife gestoppt Wie man es repariert?Python Wie man den Wert in der while-Schleife zurückgibt

ser = serial.Serial(
    port='COM5', 
    baudrate = 9600, 
    timeout=1) 
while 1: 
    x=str(ser.readline()) 
    x = re.findall("\d+\.\d+", x) 
    x = float(x[0]) 
    return(x) #loop stopped 
    print(x) 

Könnten Sie mir bitte helfen?

+1

Abhängig von, was Sie die Schleife stattdessen tun wollen. Hast du [yield] (http://stackoverflow.com/q/231767/1639625) versucht? –

+1

Vielleicht möchten Sie einen [Generator] (https://wiki.python.org/moin/Generators)? – Phylogenesis

+0

Vielen Dank für Ihren Kommentar. Ich habe den Ertrag noch nicht versucht, aber mein Projekt muss 24 Stunden sammeln, ist es möglich, riesige Datenmengen zu sammeln? und ich möchte Daten in Echtzeit senden –

Antwort

0

Nehmen Sie einfach Ihre

x=str(ser.readline()) 
x = re.findall("\d+\.\d+", x) 
x = float(x[0]) 
return(x) #loop stopped 

es ausdrückte in eine Funktion wie

def foo(ser): 
    x=str(ser.readline()) 
    x = re.findall("\d+\.\d+", x) 
    x = float(x[0]) 
    return(x) 

und Ihre while-Schleife einfach ändern

while 1: 
    print(foo(ser)) 

jedoch @developius eine bessere Lösung sein musste die würde so etwas wie

aussehen
while 1: 
    x=str(ser.readline()) 
    x = re.findall("\d+\.\d+", x) 
    x = float(x[0]) 
    print(x) 
+1

Danke für den Rat Dillanm ich werde versuchen, ich bin ein Anfänger der Codierung –

+0

@ JuizyJ. wir müssen alle irgendwo anfangen! Die Python-Dokumente sind ziemlich gut für sich selbst, ich fand auch [Codecademy] (https://www.codecademy.com/learn/python) und [TutorialsPoint] (https://www.tutorialspoint.com/python/) zu Ziemlich gut, wenn ich Python lernte, besonders Codecademy, da es interaktiv ist und sofortiges Feedback gibt! (Und sie sind beide auch frei!) – Dillanm

0

u kann versuchen, dieses

while 1: 
    x=str(ser.readline()) 
    x = re.findall("\d+\.\d+", x) 
    x = float(x[0]) 
return x 
Verwandte Themen