2017-01-13 10 views
0

whileループに戻るとループが停止しますどのように修正するのですか?Python whileループで値を返す方法

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) 

お願いします。

+1

を試すことができますあなたは、ループが代わりに何をしたいのかに依存します。あなたは['yield'](http://stackoverflow.com/q/231767/1639625)を試しましたか? –

+1

おそらく、[発電機](https://wiki.python.org/moin/Generators)が必要ですか? – Phylogenesis

+0

ご意見ありがとうございます。私はまだ歩留まりを試していませんでしたが、私のプロジェクトでは24時間を収集する必要があるので、膨大なデータを収穫することが可能ですか?私はリアルタイムでデータを送信したい –

答えて

0

単にあなたの

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

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

のような関数にそれを置く取り、単に

while 1: 
    print(foo(ser)) 
しかし

@developiusよりよい解決策を持っていたことを、あなたのwhileループを変化します何かのように見えるでしょう

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

アドバイスありがとうDillanm私はコーディングの初心者です。 –

+0

@JuizyJです。我々はどこかに出発しなければならない! Pythonのドキュメントはかなり良いですが、私は[Codecademy](https://www.codecademy.com/learn/python)と[TutorialsPoint](https://www.tutorialspoint.com/python/)も見つけました。私がPython、特にCodecademyを学んでいたときに、インタラクティブで即刻のフィードバックが得られたので、かなり良いことになりました! (そして彼らも両方とも無料です!) – Dillanm

0

uはこの1

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