我有这个循环:
puts "Welcome to the Loop Practice Problems"
puts " Write a number between 1 and 10, but not 5 or else...."
ans = gets.chomp!
if ans < 1
puts "Tf bruh bruh"
elsif ans > 10
puts "Now you just playin"
elsif x == 5
print "You wildin B"
else
puts "Fosho that's all I require"
end
它没有正常运行,我试图了解原因。如果你可以帮助我,我会很感激。
如果你知道练习问题的好网站,我很乐意尝试。我检查了Coderbyte和Code Kata,但他们设置的方式看起来并不正确,他们也没有问题可以解决基础问题。
答案 0 :(得分:3)
这里的问题是您没有将ans
转换为数字,而是将其与一个数字进行比较。 ans
将成为一个字符串。
在Ruby中,当你将数字与字符串进行比较时,Ruby说这两者并不相等:
"1" == 1
=> false
您可以使用以下代码重现问题:
puts "Welcome to the Loop Practice Problems"
puts " Write a number between 1 and 10, but not 5 or else...."
ans=gets.chomp!
p ans
p
方法将输出&#34;检查&#34;该对象的版本,(它与执行puts ans.inspect
相同)。这将显示它用引号括起来,表示它是一个字符串。
你可能想这样做:
ans = gets.chomp!.to_i
这里的to_i
方法会将数字转换为整数,然后您的比较就能正常工作。
答案 1 :(得分:0)
您必须将输入字符串类型对象转换为整数类型
ans = gets.chomp!.to_i #input string convert into integer.
if ans < 1
puts "Tf bruh bruh"
elsif ans > 10
puts "Now you just playin"
elsif x == 5
print "You wildin B"
else
puts "Fosho that's all I require"
end