2015-04-28 22 views
1

從Ruby開始並進行練習我在網上找到了。最初,這只是製作一個腳本,它會生成一個隨機數,並讓用戶猜測它是什麼,並反饋這些猜測是否過高「熱」或太低「冷」。Ruby:如果while循環中斷,則放置一條消息,如果while循環結束,則放置另一條消息

我想通過給用戶5次猜測來補充這一點。所以我想讓腳本說「正確!你贏了!」如果用戶猜測正確,但說「對不起,你輸了,正確答案是#{答案}。」如果你用盡了所有的猜測。

我的代碼:

answer = rand(1..100) 
guess_count = 5 

puts answer 

print "Pick a number between 1 and 100. You get 5 guesses. " 
guess = gets.chomp.to_i 

while guess_count > 1 
    guess_count -= 1 
    break puts "Correct! You win!" if guess == answer 
    if guess > answer 
    print "Hot. " 
    else 
    print "Cold. " 
    end 
    puts guess_count != 1 ? "Guess again. You have #{guess_count} guesses left." : "Guess again. You have 1 guess left." 
    guess = gets.chomp.to_i 
end puts "Sorry, you lose. The correct answer was #{answer}." 

但是,這並不工作,因爲你不能釘說,「看跌期權」行「結束」的結尾一樣,你可以用「破發」。有什麼建議麼?

謝謝。

回答

0

如何將字符串賦值給一個變量並在循環結束時將其打印出來?

output = "Sorry, you lose. The correct answer was #{answer}." 
while guess_count > 1 
    guess_count -= 1 
    if guess == answer 
    output = "Correct! You win!" 
    break 
    end 
    if guess > answer 
    print "Hot. " 
    else 
    print "Cold. " 
    end 
    puts guess_count != 1 ? "Guess again. You have #{guess_count} guesses left." : "Guess again. You have 1 guess left." 
    guess = gets.chomp.to_i 
end 
puts output 
+0

謝謝,能夠完成任務。我想我更感興趣的是,如果有任何方法可以在一行中完成所有操作,「當它到達循環結束時會發生,但是如果循環提前退出,則會被忽略」。但我想這不存在。 – Eugene

0

也許你可以使用這樣的事情

def guess_number 
    number, attempts = rand(1..100), 5 

    while attempts != 0 
    attempts -= 1 
    puts "Your's guess ?" 
    guess = gets.chomp.to_i 
    if number == guess 
     return "Correct! You win!" 
    else 
     if attempts != 0 
     puts number < guess ? "Cold." : "Hot." 
     puts "Guess again. You have #{attempts} attempts left." 
     end 
    end 
    end 
    "Sorry, you lose. The correct answer was #{number}." 
end