2017-02-23 67 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能够使用许多模块。