2017-05-24 79 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> –