Project1

标题: a[n]里面只能是数字吗? [打印本页]

作者: Forever火    时间: 2014-6-16 13:48
标题: a[n]里面只能是数字吗?
b = [0,1,2,3,4,5,6,7,8,9,]
  a = [*0..100]
  for i in 0..100
    a[i] = 2i + 2
    if i = 10 * b + 6
      a[i] = nil
  end
第4行出错,我零基础学脚本,还请多多指教
如果不能用a[i]赋值的话,那么我要如何对这个a中的数组每个进行赋值?
作者: heiwang1997    时间: 2014-6-16 13:56
b = [0,1,2,3,4,5,6,7,8,9,]
.....
if i = 10 * b + 6
.....

undefined method +/* for array?
作者: moy    时间: 2014-6-16 14:03
错误太多不知从何说起……首先。
那行的报错原因是2i,你中间没打乘号
然后if和for都需要一个end,你少一个
然后b是个数组,你直接拿整数和他乘然后赋值给整数肯定会出问题,以及,可以想见,你是准备判断是否相等,于是“=”是赋值,“==”才是判断。
作者: hys111111    时间: 2014-6-16 14:12

  1. b = [0,1,2,3,4,5,6,7,8,9,]
  2.   a = [*0..100]
  3.   for i in 0..100
  4.     a[i] = 2 * i + 2
  5.     if i == 10 * b + 6
  6.       a[i] = nil
  7.     end
  8.   end
复制代码
附带修改正确的脚本。
作者: Forever火    时间: 2014-6-16 15:40
moy 发表于 2014-6-16 14:03
错误太多不知从何说起……首先。
那行的报错原因是2i,你中间没打乘号
然后if和for都需要一个end,你少一个 ...

我去,算法直接套用了。。。感谢。。
作者: Forever火    时间: 2014-6-16 16:25
hys111111 发表于 2014-6-16 14:12
附带修改正确的脚本。

报错了报错了!这个b怎么改?不用数组没办法呀。。。
作者: moy    时间: 2014-6-16 16:37
没看懂你那个b是准备干嘛的
作者: Forever火    时间: 2014-6-16 16:49
moy 发表于 2014-6-16 16:37
没看懂你那个b是准备干嘛的

打算用10*n+6来选出个位数是6的数
作者: moy    时间: 2014-6-16 16:52
  1. if a[i] % 10 == 6
复制代码
把b忘了吧
作者: Forever火    时间: 2014-6-16 17:19
moy 发表于 2014-6-16 16:52
把b忘了吧

解决了,好评,认可@谁来着。。。
作者: Forever火    时间: 2014-6-16 17:46
moy 发表于 2014-6-16 16:52
把b忘了吧

等等内啥。。。出现了很严重的问题。。。
a = [*0..100]
  for i in 0..100
    a = 2 * i
    if a % 10 == 6
      a.delete(a)
    end
  end
得出结果如图,不仅有2,4,4,而且还有nail,另外也不按顺序还有奇数。。。这是怎么回事,这个算法出来不应该都是偶数么?

QQ图片20140616174531.jpg (33.91 KB, 下载次数: 19)

QQ图片20140616174531.jpg

作者: Forever火    时间: 2014-6-16 17:56
moy 发表于 2014-6-16 14:03
错误太多不知从何说起……首先。
那行的报错原因是2i,你中间没打乘号
然后if和for都需要一个end,你少一个 ...

我把数组当成同时处理了,delete把前面的删了导致后面名字不一致了。。。把delete换成另一个函数
作者: Forever火    时间: 2014-6-16 18:02
明白了,不能在循环语句里面删东西修正后的
a = [*0..100]
  for i in 0..100
    a[i] = 2 * i
  if a[i] % 10 == 6
      a[i] = nil
      
    end
  end
  a = a.compact
p a
成功消除个位数为6的数
作者: moy    时间: 2014-6-16 18:17
哦,你好像自己解决了

顺便,如果就是改原数组,可以用compact!
作者: Forever火    时间: 2014-6-16 18:37
moy 发表于 2014-6-16 18:17
顺便,如果就是改原数组,可以用compact! ...

你那样不是直接生成一个1。。100的数组其中除掉个位数为6的数么?
作者: moy    时间: 2014-6-16 18:54
结果实测push还快了一点点- -bb,基数改为100000
结果分别是0.016和0.021
作者: Forever火    时间: 2014-6-16 20:19
moy 发表于 2014-6-16 18:54
结果实测push还快了一点点- -bb,基数改为100000
结果分别是0.016和0.021

于是还是我那个快点是吧2333333




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1