使用带有If / Else / Esif的提示循环

时间:2012-04-03 23:23:18

标签: ruby

我开始时:

    puts "Hello there, and what's your favorite number?"
    favnum = gets.to_i
    puts "Your favorite number is #{favnum}?" " A better favorite number is #{favnum + 1}!"
    puts "Now, what's your favorite number greater than 10?"
    favnumOverTen = gets.to_i
    if favnumOverTen < 10
        puts "Hey! I said GREATER than 10! Try again buddy."
    else
        puts "Your favorite number great than 10 is #{favnumOverTen}?"
        puts "A bigger and better number over 10 is #{favnumOverTen * 10}!"
puts "It's literally 10 times better!"
    end

工作正常,但如果用户输入的数字小于10,则程序结束。 我希望提示用户再次尝试,直到他们输入大于10的数字。 我应该用循环吗?

这是我采取的方式,但显然是错误的:

    puts "Hello there, and what's your favorite number?"
    favnum = gets.to_i
    puts "Your favorite number is #{favnum}?" " A better favorite number is #{favnum + 1}!"
    puts "Now, what's your favorite number greater than 10?"
    favnumOverTen = gets.to_i
    if favnumOverTen < 10
    loop.do
        puts "Hey! I said GREATER than 10! Try again buddy."
        favnumOverTen = gets.to_i
    until favnumOverTen > 10
    else
        puts "Your favorite number great than 10 is #{favnumOverTen}?"
        puts "A bigger and better number over 10 is #{favnumOverTen * 10}!"
puts "It's literally 10 times better!"
    end

2 个答案:

答案 0 :(得分:4)

这是一种比前两种更短的方式:

puts "Now, what's your favorite number greater than 10?"
until (favnumOverTen = gets.to_i) > 10
  puts "Hey! I said GREATER than 10! try again buddy."
end

这是有效的,因为赋值返回赋给变量的值。

答案 1 :(得分:1)

更好的解决方案是获得10个最喜欢的数字,然后开始until循环检查favnumOverTen > 10,如下所示:

puts "What is your favorite number greater than 10?"
favnumOverTen = gets.to_i
until favnumOverTen > 10 do
  puts "Hey! I said GREATER than 10! Try again buddy."
  favnumOverTen = gets.to_i
end

这样,如果初始条目大于10,则永远不会执行until循环(保存if语句)。

另外,您也知道,使用驼峰情况编写变量名称并不是惯用的Ruby(即favnumOverTen应为favnum_over_ten)。

相关问题