我正在尝试编写一些代码(使用while循环),它将生成随机数(1到10之间),直到生成数字7。
这是我到目前为止所得到的,但它只是在一个打印1到10之间的随机数的循环中。
num = ""
while num != 7
print rand(1..10).to_s
end
puts "over"
我理解为什么它会无限循环,但我不确定如何生成随机数,并在7出现时仍然结束循环。
答案 0 :(得分:2)
有很多方法可以做到,例如:
loop do
num = rand(1..10)
print num
break if num == 7
end
另外,要使代码正常工作:
num = ""
while num != '7'
num = rand(1..10).to_s
print num
end
puts "over"
原因是您将num
转换为字符串并将其与integer
答案 1 :(得分:2)
puts (number = rand(1..10)) until number == 7
答案 2 :(得分:0)
试试这个
$num = 0
while $num != 7
$num = rand(1..10)
print $num.to_s + "\n"
end
puts "over"
答案 3 :(得分:0)
您必须将 rand 生成的值分配给num变量
$ num = ''
$ while num != 7
$ num = rand(1..10)
$ print num
$ end
$ # 6168510267=> nil
答案 4 :(得分:0)
这段代码的问题在于你生成一个无限循环,因为num总是"",你需要像这样更新while循环中的变量num:
num = ""
while num != 7
num = rand(1..10)
puts num
end
puts "over"
在这种情况下,你不知道循环何时会停止,但是在每个循环中它可以以1/10的概率停止,这不是一个好习惯,你需要知道循环何时停止,所以会更好为这样的最大尝试次数添加变量。而且你也不需要将数字转换成字符串来打印它:
num = 0
max_tries = 100
try = 1
guess = 7
while (try < max_tries && num != guess)
num = rand(1..10)
try = try + 1
puts num
end
if (try >= max_tries)
puts "you do not get the guess"
else
puts "over"
end
你得到了这个:
[4] pry(main)> 9
9
3
4
9
6
9
8
4
5
9
10
4
3
7
over
=> true