2017-02-23 62 views
0

我對Python非常陌生。目前正在研究一個處理break語句的實驗室。我有這行代碼math.sqrt在break語句中

from math import sqrt 
for i in range(1001, 0, -1):  
    root = sqrt(i) 
    if root == int(root):  
     print i 
     break 

的問題問我改第一線導入數學(不含進口開方)並保持其他線路一樣。這讓我與此:

import math 
math.sqrt(i) 
for i in range(1001, 0, 01): 
    root = sqrt(i) 
    if root == int(root): 
     print i 
     break 

當運行它時,我想出了名稱'sqrt'沒有定義的NameError消息。如何在不更改第一行的情況下修復此代碼?

謝謝。

+0

https://docs.python.org/2/tutorial/modules.html –

回答

0
import math 
for i in range(1001, 0, -1):  
    root = math.sqrt(i) 
    if root == int(root):  
     print i 
     break 
0

這不是進口是如何工作的。如果您只是想提起數學模塊而不提前提到平方根函數,請執行

import math 
for i in range(1001, 0, -1): 
    root = math.sqrt(i) 
    if root == int(root): 
     print i 
     break 

請注意這是如何工作的。語句import math告訴Python記錄數學模塊中的所有函數,而不必將所有函數的名稱添加到當前環境中。換句話說,Python可以快速使用數學模塊,但是它目前唯一可以理解的名字是math

當您需要使用數學模塊中的函數時,只需以math.作爲前綴,如math.sqrt所示。 Python知道math是哪裏,因此它使用該模塊來查找sqrt函數並使用它。但每次使用sqrt或其他功能時都要這樣做。無需提前申報,只需到math即可。

這將名稱數量降低到合理的大小(大型程序中存在問題),但仍然使Python能夠使用許多模塊。