2017-05-31 157 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如果解決了,請不要忘記接受答案。 –