2014-08-29 31 views
2

我正在使用Python 3.41。Python def函數在定義時輸出提示信息

如果我理解以下螺紋, Why is this def function not being executed in Python? 正確,Python中定義一個函數將存儲功能路程,將不執行,除非調用。我對嗎?

我想搜索一個數字的除數列表,將它存儲在一個元組中並將其打印出來。

首先我寫的,

if x < 0: 
    print ('not positive') 
else: 
    div =() 
    for i in range(1, x): 
     if x%i == 0: 
      div = div + (i,) 
    print (div) 

這個工程。

現在我想這是一個更大的代碼功能。這是我嘗試過的代碼。

def find_dt(x = int(input('enter a positive number '))): 
    if x < 0: 
     print ('not positive') 
    else: 
     div =() 
     for i in range(1, x): 
      if x%i == 0: 
       div = div + (i,) 
     print (div) 

當我執行此操作時,它在程序窗口中打印該函數的提示消息而不調用它。另外如果我輸入一個數字,它什麼也不返回。我期待在程序窗口中看不到任何明顯的事情。

你會詳細說明發生了什麼,並教我如何正確書寫它以達到我想要的目的?我希望我的問題很清楚。

感謝,

+1

雖然我們檢查出來的問題,它會是不錯的,並幫助我們如果你想更好地格式化你的代碼 – Cocksure 2014-08-29 03:20:01

+1

抱歉可怕的可讀性,我會着眼於它。謝謝。 – Caerbannog 2014-08-29 03:21:44

+0

我以爲你需要四個空格和一個>被阻止在帖子中。我編輯了這個問題,我希望現在好一點。 – Caerbannog 2014-08-29 03:34:34

回答

6

你所看到的提示是因爲你把電話給input()在函數定義的參數 - 特別是作爲默認值,其在定義時被評估。

這聽起來像你真正想要的是不帶任何參數的函數,並且僅運行時調用input()

def find_dt(): 
    x = int(input('enter a positive number: ')) 

    if x < 0: 
     print ('not positive') 
    ... 
+0

我明白了!我很驚訝我有多快得到了答覆。謝謝。 – Caerbannog 2014-08-29 03:23:49

+0

雖然通常在調用者中執行「輸入」是一種更好的設計,並且在沒有外部交互的情況下編寫函數。 – tripleee 2014-08-29 04:26:21

+0

@tripleee全部取決於期望的結果。 – Amber 2014-08-29 06:04:55