Python break语句中的math.sqrt

Python break语句中的math.sqrt,python,math,Python,Math,我对python非常陌生。目前正在处理中断语句的实验室中工作。我有这行代码 from math import sqrt for i in range(1001, 0, -1): root = sqrt(i) if root == int(root): print i break 问题要求我将第一行更改为导入数学(不导入sqrt),并保持其他行不变。这让我想到: import math math.sqrt(i) for

我对python非常陌生。目前正在处理中断语句的实验室中工作。我有这行代码

from math import sqrt 
for i in range(1001, 0, -1):     
    root = sqrt(i) 
    if root == int(root):      
        print i 
        break 
问题要求我将第一行更改为导入数学(不导入sqrt),并保持其他行不变。这让我想到:

import math
math.sqrt(i)
for i in range(1001, 0, 01):
    root = sqrt(i)
    if root == int(root):
        print i
        break
在运行它时,我出现了一条NameError消息,表明没有定义名称“sqrt”。如何在不更改第一行的情况下修复此代码


谢谢。

导入不是这样工作的。如果您只想提到数学模块,而不想先提到平方根函数,请执行以下操作

import math
for i in range(1001, 0, -1):     
    root = math.sqrt(i) 
    if root == int(root):      
        print i 
        break 
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
或其他功能时都要这样做。不需要预先单独声明,只需对数学进行声明即可

这将名称的数量保持在合理的大小(在大型程序中是一个问题),但仍然使Python能够使用许多模块