查看: 3890|回复: 16

[已经解决] a[n]里面只能是数字吗?

[复制链接]
梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
发表于 2014-6-16 13:48:13 | 显示全部楼层 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有账号?注册会员

×
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中的数组每个进行赋值?
梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
 楼主| 发表于 2014-6-16 20:19:18 | 显示全部楼层
moy 发表于 2014-6-16 18:54
结果实测push还快了一点点- -bb,基数改为100000
结果分别是0.016和0.021

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

点评

moy
我的稍微快一点,但其实无所谓了,反正也没人拿他算十几万的偶数  发表于 2014-6-16 20:39
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

发表于 2014-6-16 18:54:22 | 显示全部楼层
结果实测push还快了一点点- -bb,基数改为100000
结果分别是0.016和0.021
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
 楼主| 发表于 2014-6-16 18:37:36 | 显示全部楼层
moy 发表于 2014-6-16 18:17
顺便,如果就是改原数组,可以用compact! ...

你那样不是直接生成一个1。。100的数组其中除掉个位数为6的数么?

点评

moy
不过效率肯定不及直接设定好数组大小就是,push会导致每次都重新对数组扩容,代价太高了  发表于 2014-6-16 18:52
moy
2*i啊0 0  发表于 2014-6-16 18:47
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

发表于 2014-6-16 18:17:57 | 显示全部楼层
哦,你好像自己解决了
  1.   a=[]
  2.   for i in 0..100
  3.     a.push(2*i) unless 2*i%10==6
  4.   end
  5.   p a
复制代码
我觉得可以考虑这样做的。

顺便,如果就是改原数组,可以用compact!
Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
 楼主| 发表于 2014-6-16 18:02:57 | 显示全部楼层
明白了,不能在循环语句里面删东西修正后的
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的数
回复

使用道具 举报

梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
 楼主| 发表于 2014-6-16 17:56:19 | 显示全部楼层
moy 发表于 2014-6-16 14:03
错误太多不知从何说起……首先。
那行的报错原因是2i,你中间没打乘号
然后if和for都需要一个end,你少一个 ...

我把数组当成同时处理了,delete把前面的删了导致后面名字不一致了。。。把delete换成另一个函数
回复

使用道具 举报

梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
 楼主| 发表于 2014-6-16 17:46:45 | 显示全部楼层
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
回复

使用道具 举报

梦石
0
星屑
55
在线时间
84 小时
注册时间
2009-1-30
回帖
142
 楼主| 发表于 2014-6-16 17:19:45 | 显示全部楼层
moy 发表于 2014-6-16 16:52
把b忘了吧

解决了,好评,认可@谁来着。。。
回复

使用道具 举报

无节操

梦石
0
星屑
608
在线时间
795 小时
注册时间
2009-2-6
回帖
3910

开拓者贵宾

发表于 2014-6-16 16:52:21 | 显示全部楼层
  1. if a[i] % 10 == 6
复制代码
把b忘了吧

评分

参与人数 1梦石 +1 收起 理由
天地有正气 + 1 认可答案

查看全部评分

Brandnew day, Brandnew Life
                             规 实在  中
暂为素材区版主,版其  琢磨
应援一下~
RPG制作大师授权素材推广计划
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.

在本版发帖返回顶部