如何运行简单的Ruby脚本
我想做一个程序,检查你输入的数字是否是偶数。有点像做闰年计划,但是对于任何可以被2整除的数字。 大致如下:如何运行简单的Ruby脚本,ruby,Ruby,我想做一个程序,检查你输入的数字是否是偶数。有点像做闰年计划,但是对于任何可以被2整除的数字。 大致如下: num = gets.chomp while num != 0 if (num%2) == 0 puts 'yess' else puts 'nooo' end end 我知道有一些简单的东西我需要改变它才能运行。 (顺便说一句,我昨天刚开始学习Ruby!)整数有两种方法。它们是偶数?和奇数? 您可以在if语句中这样使用: if num.even?
num = gets.chomp
while num != 0
if (num%2) == 0
puts 'yess'
else
puts 'nooo'
end
end
我知道有一些简单的东西我需要改变它才能运行。
(顺便说一句,我昨天刚开始学习Ruby!)整数有两种方法。它们是
偶数?
和奇数?
您可以在if语句中这样使用:
if num.even?
puts 'yess'
else
puts 'nooo'
end
但是,更简单的方法是使用三元表达式:
puts num.even? ? "yes" : "no"
但是,请确保num
是一个整数。来自获取的任何内容都将是字符串。因此,您应该执行num=gets.chomp.to\i
。任何不是数字的东西,如“h”
,都将返回0
"5".to_i #=> 5
"h".to_i #=> 0
这里有两个问题
首先是其他人放的东西,您需要确保在num变量上使用“.to_i”将输入转换为整数
其次,由于您使用的是“while”循环,因此该代码将您置于无限循环中。
因为数字只输入一次,所以无论输入是什么,都会永远卡在“while”循环中。基本上,“num”永远都不是0
最好使用if..else语句。比如:
num = gets.chomp.to_i
if num != 0
if (num%2) == 0
puts 'yess'
else
puts 'nooo'
end
else
puts "that's 0, dude"
end
将8.5%设为偶数?“是”:“否”#=>“是”
或某个num=24 num.modulo(2).zero?#=>真
…或,num=15 num.modulo(3)。零?#=>真的
…欢迎来到StackOverflow!通常,当您看到您不期望的行为时,最好准确地说明您看到了什么(即,只需将运行程序的输出的相关部分复制到问题本身中)。你的问题不清楚你是否真的得到了任何输出,或者你是如何运行它的;如果这是问题所在,那么您的代码(和原始标题)就无关紧要了。好的,谢谢您的提示。是“if循环”吗?你是说if构造?不管怎样,我还是在投票,因为到目前为止,你是唯一一个指出无限循环的人,这让我震惊。对不起,我是说“如果..否则”的说法。已编辑。您不需要chomp
num=get.to_i
就足够了。更一般地说,例如,'1234My dog is Diva'=>1234(Fixnum)
。虽然只是一个风格的问题,但是把所有的第一行都写为“Po.No.0??”,那是0,伙计“:(数字,甚至?‘yess’:‘NOOO’))。我更喜欢这种方式,因为横向阅读比纵向阅读更容易。我同意肯定有更好的方法来使用“.even”之类的东西编写代码,但我认为提出这个问题的用户刚刚开始学习Ruby。开始学习时,写出类似“.even?”的方法是一个很好的学习方法。不过我很感谢你的反馈。我还想指出0也是偶数,尽管它是“0,伙计”。