2016-09-26 79 views
-1

我有以下代碼:的Python:爲什麼返回實際上並不返回任何東西,我可以看到

def is_prime(n): 
    limit = (n**0.5) + 1 
    q = 2 
    p = 1 
    while p != 0 and q < limit: 
     p = n % q 
     q = q + 1 
     if p == 0 and n != 2: 
      return 'false' 
     else: 
      return 'true' 

但是,當我在一個整數發送,沒有什麼返回。控制檯簡單地移動到一個新的命令行。這裏有什麼問題?

編輯1: 以下是不同場景的截圖。我想這樣做,我用一個特定的號碼調用函數,函數將返回「真」或「假」,這取決於發送到函數中的數字的原始性。我想我真的不太瞭解返回功能非常好。

此外,請注意,當我送入測試9時,它會返回true,儘管9相當肯定是一個複合數字...... if/else位應該在while循環之外嗎?

關鍵下面圖像:

1:這是代碼,因爲它是上面和如何調用它在Spyder的控制檯

2:添加打印語句的函數外

3 :這是由教授

image here

提供了一個簡單的階乘函數編輯2:

我做了一個快速改變的代碼結構。我真的不明白爲什麼,這使得它的工作,但把如果while循環外/ else語句使事情得到預期的真/假輸出

def is_prime(n): 
    limit = (n**0.5)+1 
    q=2 
    p=1 
    while p!=0 and q<limit: 
     p = n%q 
     q = q+1 
    if p==0 and n!=2: 
     return 'false' 
    else: 
     return 'true' 

而且,我使用is_prime調用該函數的控制檯(int_of_choice)

感謝您的有益建議

+0

適合初學者,修復您的縮進。然後,逐步運行,並查看每行的每個變量的值。 – njzk2

+9

因爲您甚至需要打印返回值,即使您調用該函數。 –

+0

我用另一個打印語句測試了你的代碼,除了'n = 1'之外,一切正常。 – albert

回答

1

沒有什麼是錯的,但你必須打印出函數的返回。 像這樣:

def Test(): 
    if True: 
     return "Hi" 

print(Test()) 

在這種情況下Python會在控制檯中顯示「你好」。