2017-05-31 158 views
1

所以我在edX上做了关于Python的教程。我被卡住了,因为我无法摆脱“无”结果。有人能告诉我为什么会发生这种情况,以及如何避免它?谢谢。For循环返回'None'

def steps(aNum): 
    count = 1 
    tabs = " " 
    for x in range(1, aNum + 1): 
     strNum = str(x) * 4 
     numTabs = tabs * count 
     count += 1 
     result = numTabs + strNum 
     print(result) 

结果:

1111 
     2222 
None 

结果我想要的是:

1111 
     2222 
+2

无其他地方它是你的代码,它不是你发布的内容。 – jordanm

回答

-1

你越来越没有价值,因为你不是在函数返回任何东西。当你不返回任何函数时返回None值,所以当你调用你的函数时,None将被打印。要避免的是,你可以使用return或yield语句或我推断你正在使用你的函数为:

var = steps(aNum) # this will assign None value to var but before assigning None value it has already print your desire values as result 
print(var) # when None is assigned to var it will be printed in output. 

,而不是下面的代码这一点:

steps(aNum) # just print statement within function 

注:以上线路steps(aNum)不分配所以它只会在函数内打印语句。

+0

这只是输出'None',因为函数的计算结果为None。摆脱'print',只用'steps(aNum)'调用函数。 –

1

必须在打印函数返回(不存在)与

print(steps(2)) 

相反,只使用

steps(2) 

而且,你有必要与统计变量的复杂性,因为你已经让x在循环中提供相同的值序列。这很简单。

def steps(aNum): 
    tabs = " " 
    for x in range(1, aNum + 1): 
     strNum = str(x) * 4 
     numTabs = tabs * x 
     result = numTabs + strNum 
     print(result) 
+0

好吧!谢谢!你是对的!我有一个误解 – lloydyu24

+1

@ lloydyu24如果解决了,请不要忘记接受答案。 –