我想寫一些代碼(使用while循環),它將生成隨機數(1和10之間),直到生成數字7。生成隨機數直到某個
這裏是我這麼遠,但它只是停留在打印隨機數1和10
num = ""
while num != 7
print rand(1..10).to_s
end
puts "over"
我明白爲什麼它沒有循環端之間的循環,但我不能確定如何產生隨機數,並且當出現7時仍然結束循環。
我想寫一些代碼(使用while循環),它將生成隨機數(1和10之間),直到生成數字7。生成隨機數直到某個
這裏是我這麼遠,但它只是停留在打印隨機數1和10
num = ""
while num != 7
print rand(1..10).to_s
end
puts "over"
我明白爲什麼它沒有循環端之間的循環,但我不能確定如何產生隨機數,並且當出現7時仍然結束循環。
比較此代碼的問題是,因爲num是永遠「你產生無限循環」,你需要更新while循環中變量num是這樣的:在這種情況下
num = ""
while num != 7
num = rand(1..10)
puts num
end
puts "over"
,你不知道什麼時候該循環將停止,但在每個迴路可以以概率1/10停止,這不是一個很好的習慣,你需要知道什麼時候循環停止,所以最好爲這樣的最大嘗試次數添加一個變量。而且你不需要改造D出現數字符串打印:
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
嘗試了這一點
$num = 0
while $num != 7
$num = rand(1..10)
print $num.to_s + "\n"
end
puts "over"
你必須指定蘭特生成的值到num變量,
$ num = ''
$ while num != 7
$ num = rand(1..10)
$ print num
$ end
$ # 6168510267=> nil
有很多方法可以做到這一點,例如:
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
_「我理解爲什麼它的循環沒有結束」 _ - 你有什麼感想爲什麼它沒有結束? – Stefan