剧透提醒:我是一个真正的新手。我的任务是为一个类计算Ruby中的冒泡嗡嗡声,虽然我已经找到了很多解决问题的代码版本,但我的理解是如此初级,以至于我无法弄清楚这些示例真正是如何工作的。
第一个问题(如果您对此大笑,请参阅剧透警告):如何在Ruby中打印数字1到100?
第二个问题:可以用‘If Else’来解决这个问题吗?我失败的代码如下(附件有屏幕截图):
puts('Lets play fizzbuzz')
print('enter a number: ')
number = gets()
puts(number)
if number == % 3
puts ('fizz')
elsif number == % 5
puts ('buzz')
elsif number == %15
puts ('fizzbuzz')
end
谢谢,
12条答案
按热度按时间smdnsysy1#
作为一个新手,我们都得从某个地方开始,对吗?Ruby很可爱,因为它让我们可以一直使用块,所以要数到100,你可以在fix num上使用几个方法,看看文档中的更多内容。这里有一个例子可能会对你有所帮助;
对于您的第二个问题,也许可以快速查看一下我为您准备的小实现,希望它能帮助您理解这个问题:
bxfogqkk2#
第一个问题:这个问题有几个解决方案。例如,
真正的新手:https://github.com/bbatsov/ruby-style-guide
bbuxkriu3#
另一种可能有帮助的方法是:
p8ekf7hl4#
对于失败的代码,条件语句应该如下所示:
您不想要最后一个elsif语句,因为它永远不会被执行(如果一个数字不能被3整除或被5整除,那么它肯定不能被15整除),为此进行调整,将第二个elsif更改为Simply,如果且如果该数字可被5除尽而不是被3除尽,则不会输出Fizz,但将输出Buzz
我只是向您展示如何更正您的代码,但正如其他人所指出的,Ruby中有更优雅的解决方案。
5sxhfpxr5#
这不是写它最漂亮的方式,但对初学者和可读性都很好。
hlswsv356#
问题2:是的,你可以但我会寻找一种更优雅的方式来写这个,作为定义的一部分,比如
这就是帮助我理解没有使用.each方法创建变量的答案。对不起,我缩进了。仍在学习如何使用Stackoverflow文本编辑。
cs7cruho7#
作为一个班轮
pepwfjgg8#
对于更复杂的解决方案,这是一种构建简单DSL的方法,用于快速修改FizzBuzz程序(添加具有自己的关键字的新除数)
7kjnsjlb9#
这是一个相当优雅的解决方案。
它甚至可以更紧凑
2lpgd96810#
冒泡嗡嗡声
n1bvdmb611#
第一个问题:
2mbi3lxu12#
以下是我最“惯用的Ruby”解决方案:
而且它起作用了:
https://gist.github.com/galori/47db94ecb822de2ac17c