如何运行简单的Ruby脚本

如何运行简单的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?

我想做一个程序,检查你输入的数字是否是偶数。有点像做闰年计划,但是对于任何可以被2整除的数字。 大致如下:

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,伙计”。