Panel输出数据类型猜想

Hello大家好,小黄人君由于学业繁忙消失了一段,不知道大家想我吗?

在Grasshopper里,许多人习惯使用Panel输出一些数据。我也经常使用Panel来便捷地输入数据。然后有时候电池程序没有问题,可整个Grasshopper就是无端报错了。这是为什么呢?——很有可能问题就出在Panel上。

今天这篇帖子给大家分享一下前一段做的关于Panel输出数据的类型的探讨。

看过《Grasshopper完全学习手册》的朋友们可能对这张图比较熟悉:

这张图是我在写Item Index运算器时发现的问题。从这张图中我已经给出了一个结论,就是4≠4.0;4.0≠4.0.我并没有深入解释这两个不等式,其实不等式的含义是Panel输入的4和4.0并不等于List Item输出的4.0,尽管他们在“数学”上看都是大小为4的一个“数”。而且由于当时我并没有很好的办法向大家证明他们具体是怎样的不同,因此我只是给大家列出了这个不等式。今天我们来用新的方法解释一下为何4≠4.0;4.0不等于4.0.

有一些代码基础的朋友一定知道,对于电脑来说,任何输入的数据都是有“类型”这一属性的。打个比方,如果x=1,y=2:那么x+y可能等于3,这是数学上的运算,x和y分别都是数字,“+”就是数学里的运算符号;也有可能x+y=xy,也就是“1”+“2”=“12”,这时候电脑是把“1”和“2”当成了单独的字符,“+”号不再是数学运算符号,而是逻辑连接符号,计算机将字符“1”和“2”进行了合并。

如果看到这里你还能听懂的话,那么我来试着翻译一下这个不等式。我当时的猜想(虽然当时无力证明)是,Panel输出的“4”或“4.0”是“字符”而非“数字”,然而就好比线段可以用曲线运算器拾取一样,有些运算器能够自动将这些“字符”转化为“数字”。很不幸的是,Item Index并不能自动将输入端的输入类型强制转化为数字。因此才出现了输出-1的情况。

今天我学习了一些最基础的Python,我试着证明我之前的猜想,果然如此:

大家可以清楚地看到,当输入端为Panel的“4”时,这个“4”的格式其实并不是“int”(整数),而是“string”(字符串);而List Item输出的“4.0”的格式不是字符串,而是“float”(浮点数)。看来我一年前对Panel输出字符的想法是正确的。至于为何在输入类型出错,Item Index就输出“-1”这个值,而不是“-2,-3”,我还没有很好的解释。N-dda的@筑梦NARUTO 做过一些研究,他认为这个运算器的原理是找到数据在计算机内存的位置,不过我还无法理解这个原理和-1之间的关系。希望有兴趣的朋友可以继续尝试一下。

最后,切记,不要总是养成用Panel输入数据的习惯——你永远不知道哪个运算器不会自动帮你转化数据类型。
永远养成检查输入数据类型的习惯。
最后,切记,不要总是养成用Panel输入数据的习惯——你永远不知道哪个运算器不会自动帮你转化数据类型。
永远养成检查输入数据类型的习惯。
最后,切记,不要总是养成用Panel输入数据的习惯——你永远不知道哪个运算器不会自动帮你转化数据类型。
永远养成检查输入数据类型的习惯。


爱你们的小黄人君
DanielJin

 

———————————————————————————————————————————————————————

本文所有内容版权均属于作者所有

欢迎您扫描下方二维码关注小黄人君的微信公众账号

二维码新

发表评论

邮箱地址不会被公开。 必填项已用*标注