我是Python的新手,这是我在Python中的第一个程序。我来自R的世界所以这对我来说有点不直观。
执行时
In[15]: import math
...: import random
...: random.random()
...: math.sqrt(85)
...:
在交互模式下(即在>>>
提示符下),我得到math.sqrt()
的输出。我根本没有看到随机数。但是,当我单独执行random.random()
和math.sqrt()
时,我确实得到了两个结果。为什么是这样?我如何得到两个结果?我问这个是因为我习惯在R中选择多行并以交互模式执行它们,特别是在我尝试调试代码时。在尝试调试(例如,2000行代码)时,一次只执行一行将是极其痛苦的。
这是当我在R中选择多行然后执行它们时会发生什么:
runif(1,0,1)
sqrt(85)
它会自动解析这些行并生成以下输出:
> runif(1,0,1)
[1] 0.01597949
> sqrt(85)
[1] 9.219544
我研究了SO并找到了Write multi-line statement on single line。我不确定如何使用这个帖子的正式答案。
这是PyCharm的输出:
import math
import random
random.random()
math.sqrt(85)
Out[15]: 9.219544457292887
我正在寻找一种机制来查看随机数和85的sqrt,而不必像在R代码中那样添加任何分隔符,
或;
。我很感激任何想法。
预期输入:可以使用"使用控制台"执行选择来运行代码。在PyCharm [键盘快捷键:Alt + Shift + E]
import math
import random
random.random()
math.sqrt(85)
[请注意,我还没有使用任何分隔符";"或者"," - 就像我们在R中做的那样
预期输出:
random.random()
Out[16]: 0.183145720117748
math.sqrt(85)
Out[17]: 9.219544457292887
答案 0 :(得分:1)
您可能只看到math.sqrt()
输出的原因之一是因为默认情况下ipython / jupyter只会输出多行命令的最后一行。 Python解释器逐行执行代码,任何未明确打印的语句(如random.random()
)都只是被评估并丢弃。 Ipython / Jupyter 默认情况下获取最后一行的结果并显示它。我没有使用pycharm,但它可能做同样的事情。要查看random.random()的输出,您有两个选择:
1)使用如下的打印声明。
In [1]: import math
import random
print random.random()
math.sqrt(5)
...:
0.145504928627
Out[1]: 2.23606797749979
In [2]:
2)通过将ast_node_interactivity
参数更改为已解答here
In [1]: from IPython.core.interactiveshell import InteractiveShell
In [2]: InteractiveShell.ast_node_interactivity = "all"
In [3]: import math
import random
random.random()
math.sqrt(5)
...:
Out[3]: 0.9772320535532782
Out[3]: 2.23606797749979
IPython有各种各样的魔术命令,如%edit
和%load
,它们允许您直接编辑您喜欢的编辑器中的命令,或从下面的文件中加载特定的代码行。这有助于您选择长代码的特定部分并单独运行它们。下面我将上述行保存在名为test_interpreter.py
的文件中。
In [1]: !cat test_interpreter.py
import math
import random
print random.random()
math.sqrt(5)
In [2]: load -r 1-4 test_interpreter.py
In [3]: # %load -r 1-4 test_interpreter.py
import math
import random
print random.random()
math.sqrt(5)
...:
0.719244573423
Out[3]: 2.23606797749979
默认情况下,unix shell中的python REPL不支持多行命令(据我所知)但您可以使用;
来终止并使用\
作为转义字符开始一个新行for readline
python REPL使用的。
>>> import math;\
... import random;\
... random.random();\
... math.sqrt(5)
0.10298483416372617
2.23606797749979
在普通的python解释器和ipython中,你可以直接从编辑器中复制粘贴行,它们将像下面一样单独评估。
#Copy paste four lines together
>>> import math
>>> import random
>>> random.random()
0.16039452147586075
>>> math.sqrt(5)
2.23606797749979
答案 1 :(得分:0)
在Python 2.7.10控制台中,执行以下操作:导入数学和随机数,获取随机数,并获取数字输出的平方根:
>>> import math
>>> import random
>>> random.random()
0.52350453737542
>>> math.sqrt(85)
9.219544457292887
如果要连续打印两个值,可以编写由分号运算符分隔的多行语句:
>>> import math
>>> import random
>>> random.random(); math.sqrt(85)
0.9031053664569808
9.219544457292887