2017-05-24 73 views
0

我想這個代碼Python的不理解如何解決

def out(): 
    x=0 
    for line in range (x,10): 
     x += 1 
     return x 
print out() 

得到輸出結果1

,如果我嘗試這個代碼

def out(): 
    x=0 
    for line in range (x,10): 
     x += 1 
    return x 

print out() 

得到輸出結果10

但是h ow我可以得到如下結果:1 2 3 4 5 6 7 8 9 10 帶功能

+1

return語句位於for循環中。在Python返回中,像任何其他語言一樣,將函數返回到它的調用點。要閱讀關於[Python文檔](https://docs.python.org/2/reference/simple_stmts.html#grammar-token-return_stmt)的更多信息,如果您想返回'[1,2, 3,4,5,6,7,8,9,10]'然後使用一個變量列表'list = []'並附加一些東西給它。 'list.append(X)'。 –

回答

-3

您可以通過將print語句放在循環中來實現此目的。

例子:

def out(): 
    x=0 
    for line in range (x,10): 
     x += 1 
     print x 

或者,如果你想在一行中的所有號碼,你可以做這樣的事情:

print(" ".join(range(1,10))) 
4

它看起來就像你試圖使一臺發電機。生成器就像一個函數,只不過它會產生多個值而不是返回單個值。

def out(): 
    x=0 
    for line in range(x, 10): 
     x += 1 
     yield x 

for item in out(): 
    print(item) 
+2

當他似乎無法正確使用列表和返回語句(或意識到他可以返回一個範圍)時,我很擔心是否將OP引入生成器是一個好主意。 – timgeb

+0

謝謝這可以幫助我,我嘗試在我的代碼,它工作正常 <不時進口睡眠 進口串行 高清SER1(): 而真: SER = serial.Serial( '的/ dev/ttyUSB0',2000000) #建立特定端口上的連接 counter = 32 counter + = 1 ser.write(str(chr(counter)))#將十進制數轉換爲ASCII,然後發送給Arduino #print ser.readline( )#讀取來自Arduino的最新輸出 sleep(.1)#延遲十分之一秒 爲ser1()中的項產生ser.readline() : print item> –