gpt4 book ai didi

arrays - 将元素添加到新数组 Ruby

转载 作者:太空宇宙 更新时间:2023-11-03 17:48:16 25 4
gpt4 key购买 nike

所以最初我只是在玩“FizzBu​​zz”挑战。对于那些可能不知道这个挑战是什么的人,请允许我解释一下。这个想法是打印出数字 1..100 如果数字可以被 3 整除,它打印 Fizz 而不是 3;如果数字可以被 5 整除,则打印 Buzz;如果 number 可以被两者整除,它会打印 FizzBu​​zz。这就是我进行挑战的方式:

def super_fizzbuzz(array)  
array.each do |element|
if element % 15 == 0
puts 'FizzBuzz'
elsif element % 5 == 0
puts 'Buzz'
elsif element % 3 == 0
puts "Fizz"
else
puts element
end
end
end

这将按预期工作。我想要做的是拥有它,以便用户可以放入一个整数数组 super_fizzbuzz([3,10,15,19]) 并让它返回数组并用适当的词替换编号:[Fizz, Buzz, FizzBu​​zz, 19]。但是,我似乎无法执行此操作。我在下面尝试了以下内容,但它只将第一个答案添加到数组中..

super_array = []
array.each do |element|
if element % 15 == 0
super_array[element] << 'FizzBuzz'
elsif element % 5 == 0
super_array << 'Buzz'
elsif element % 3 == 0
super_array << "Fizz"
else
super_array << element
end

return super_array
end

我的想法是创建一个新数组,如果该元素可以被一个或两个数字整除,则将其放入新数组中,如果不能,则将元素放入数组中.但是,当我运行它时,它只会返回一个带有 Fizz 的数组。如果我运行第一个代码并将数字放在一个数组中,它会返回:

Fizz
Buzz
FizzBuzz
19
[3, 10, 15, 19]

如有任何建议,我们将不胜感激。

最佳答案

返回 super 数组

这个语句说“停止你正在做的一切并立即返回这个值”

因此第一次遍历数组,你会得到一个答案...然后命中这个结果,然后返回这个数组结果而不继续遍历数组的其余部分。

可能你想要的是在你遍历整个原始数组之后只返回新的“super_array”值......所以我将它移到循环之外例如:

super_array = []
array.each do |element|
if element % 15 == 0
super_array[element] << 'FizzBuzz'
elsif element % 5 == 0
super_array << 'Buzz'
elsif element % 3 == 0
super_array << "Fizz"
else
super_array << element
end
end
return super_array # only return once through the whole array

关于arrays - 将元素添加到新数组 Ruby,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30293542/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com