如何让Ruby中的输出按奇数和偶数排序?
我在学校里得到了这个任务。我想打印偶数如何让Ruby中的输出按奇数和偶数排序?,ruby,Ruby,我在学校里得到了这个任务。我想打印偶数 print "Print any number:" inpt = gets.chomp def odd_or_even(num) if num % 2 == 0 print "even" else print "odd" end end 我没有得到任何输出。问题出在方法上,还是我是如何写出这个方程式的?我已经尝试更改了这两个选项。我发现您发布的内容存在两个问题-first gets.chomp将返回一个字符串,而您确实需要一
print "Print any number:"
inpt = gets.chomp
def odd_or_even(num)
if num % 2 == 0
print "even"
else
print "odd"
end
end
我没有得到任何输出。问题出在方法上,还是我是如何写出这个方程式的?我已经尝试更改了这两个选项。我发现您发布的内容存在两个问题-first gets.chomp将返回一个字符串,而您确实需要一个整数,因此如果您想要防止非数字输入,您可能需要执行gets.to\I或Integergets。第二个问题是,打印不包含换行符,因此这可能是无输出问题的根源-也许可以尝试切换到puts?我看到您发布的内容有两个问题-first gets.chomp将返回一个字符串,而您确实需要一个整数,所以,如果您想防止非数字输入,您可能需要执行get.to_i或Integergets。第二个问题是打印不包含换行符,因此这可能是导致“无输出”问题的原因-也许可以尝试切换到puts?您定义了奇数或偶数方法,但从未实际调用它 您有两个选择: 采用更像脚本的方法,在不使用方法的情况下处理输入:
print 'Print any number: '
input = gets.to_i
# ^ convert the input (which is always a string) to an integer
if input % 2 == 0
puts 'even'
# ^ is the same as `print` but adds a newline character at the end
# (unless the string ends with a newline character)
else
puts 'odd'
end
如果要使用某个方法,则必须定义并调用该方法:
def odd_or_even(num)
if num % 2 == 0
puts 'even'
else
puts 'odd'
end
end
print 'Print any number: '
input = gets.to_i
odd_or_even(input)
# ^ method is called here
Ruby也有很多内置的助手。您可以通过以下两行获得相同的结果:
print 'Print any number: '
puts gets.to_i.odd? ? 'odd' : 'even'
参考资料:
获取用户输入
将输入转换为整数
检查整数是否为奇数
:是否使用if表达式的内联?对:错
您定义了奇数或偶数方法,但从未实际调用它
您有两个选择:
采用更像脚本的方法,在不使用方法的情况下处理输入:
print 'Print any number: '
input = gets.to_i
# ^ convert the input (which is always a string) to an integer
if input % 2 == 0
puts 'even'
# ^ is the same as `print` but adds a newline character at the end
# (unless the string ends with a newline character)
else
puts 'odd'
end
如果要使用某个方法,则必须定义并调用该方法:
def odd_or_even(num)
if num % 2 == 0
puts 'even'
else
puts 'odd'
end
end
print 'Print any number: '
input = gets.to_i
odd_or_even(input)
# ^ method is called here
Ruby也有很多内置的助手。您可以通过以下两行获得相同的结果:
print 'Print any number: '
puts gets.to_i.odd? ? 'odd' : 'even'
参考资料:
获取用户输入
将输入转换为整数
检查整数是否为奇数
:是否使用if表达式的内联?对:错
我想你必须检查你的输入数据 否则,可能会出现以下情况:
'abc'.to_i.even? #=> true
这是因为非数字字符串返回0
正如你所见,这不好
def odd_or_even(number)
number.odd? ? 'odd' : 'even'
end
puts 'Print any number:'
input = gets.chomp
if input =~ /\D/
puts 'It is not a number'
else
puts "It's #{odd_or_even(input.to_i)}"
end
首先,我们使用正则表达式验证数据。如果不是一个数字,我们不会检查它是奇数还是偶数
注:
我们经常使用=~来匹配字符串和Regexp
/\D/表示任何非数字字符。我认为您必须检查输入数据
i = 20
loop do
i -= 1
next if i % 2 == 1
print "#{i}"
break if i <= 0
end
否则,可能会出现以下情况:
'abc'.to_i.even? #=> true
这是因为非数字字符串返回0
正如你所见,这不好
def odd_or_even(number)
number.odd? ? 'odd' : 'even'
end
puts 'Print any number:'
input = gets.chomp
if input =~ /\D/
puts 'It is not a number'
else
puts "It's #{odd_or_even(input.to_i)}"
end
首先,我们使用正则表达式验证数据。如果不是一个数字,我们不会检查它是奇数还是偶数
注:
我们经常使用=~来匹配字符串和Regexp
/\D/表示任何非数字字符。您不需要chomp,只是为了防止无效值,您可能希望使用Integervariable,但仍然没有理由chomp。Integer4\n=>4工作得非常好。您不需要chomp,只是为了防止无效值,您可能希望使用Integervariable,但仍然没有理由chomp。Integer4\n=>4工作得非常好。除了其他人所说的,我建议您使用该方法,如果num.even。。。而不是。除了其他人所说的,我建议你使用这个方法,如果num.even。。。请为你的答案添加一些上下文请为你的答案添加一些上下文
i = 20
loop do
i -= 1
next if i % 2 == 1
print "#{i}"
break if i <= 0
end