笔记本操作的一个小问题
mathematica吧
全部回复
仅看楼主
level 4
cfwengf 楼主
MMa全书中的一个例子:
nb = SelectedNotebook[];
NotebookWrite[nb, "Expand[(1+x\!\(\*SuperscriptBox[\()\), \(4\)]\)]", \
All]
NotebookApply[nb, "x + 1/\[SelectionPlaceholder]"]
SelectionMove[nb, All, CellContents]
SelectionEvaluate[nb]
运行结果为:
x + 1/(1 + 4 x + 6 x^2 + 4 x^3 + x^4)
2018年01月07日 18点01分 1
level 4
cfwengf 楼主
类似的一段代码:
nb = SelectedNotebook[];
NotebookWrite[nb, "10!", All]
SelectionEvaluateCreateCell[nb, All]
NotebookApply[nb, "FactorInteger[\[SelectionPlaceholder]]", All]
运行结果为:
FactorInteger::exact: FactorInteger[\[SelectionPlaceholder]] 中的参数 \[SelectionPlaceholder] 不是一个精确数.
2018年01月07日 18点01分 2
都是将笔记本中高亮部分用函数作用上去,为什么前一个可以,后面一个不行?
2018年01月07日 18点01分
吧务
level 15
……你版本几?我版本9.0.1后一段可以,前一段反而不行。(把前一段的字符串里的代码改成InputForm也行。)
2018年02月03日 11点02分 3
版本11.2
2018年02月03日 12点02分
@cfwengf 我试了一下,都行啊,参5楼。
2018年02月03日 12点02分
level 4
cfwengf 楼主
像我这种“三天打鱼两天晒网”的人估计是永远学不精MMa了吧?
2018年02月03日 12点02分 4
我倒觉得没几个人能深入到笔记本编程……
2018年02月03日 12点02分
吧务
level 15
试了一下,版本11.2两段都行啊。(版本9第一段通不过是Bug?):
2018年02月03日 12点02分 5
图中两段代码的输出形式不一样,一个前面有“In[23]"和”Out[23]“,另一个前面没有。前一段代码希望的结果是”FactorInteger[3628800]",但是结果却是"FactorInteger[\[SelectionPlaceholder]]",也就是NotebookApply函数没有把FactorInteger作用到3628800上。
2018年02月03日 15点02分
感觉是这个函数出现了问题"SelectionEvaluateCreateCell",它计算单元格并将结果写入一个新的单元格中时前面不该有“In[23]"和”Out[23]“,不然后面NotebookApply就会出错
2018年02月03日 15点02分
1