程序描述:
猜数字游戏,一个人有10次机会,向终端输入数字,程序自动与要猜的数做判断,给出大或小的提示,猜对了做出反馈,如果机会用完,还没猜对,同样也要给出反馈。
程序代码如下:
puts "Welcome to 'Get My Number!'"
print "What's your name?"
input = gets
name = input.chomp
puts "Welcome,#{name}!"
puts "I've got a random number between 1 and 100."
target = rand(100)+1
num_guesses = 0
guessed_it = false
until num_guesses == 10 || guessed_it
puts "You've got {10-num_guess} guess left."
print "Make a guess."
guess = gets.to_i
num_guesses +=1
if guess < target
puts "Oops.You guess was LOW."
elsif guess > target
puts "Oops.You guess was HIGH."
elsif guess = target
puts "Good job,#{name}!"
puts "Your guessed my number in #{num_guesses} guesses!"
guessed_it = true
end
end
unless guessed_it
puts "Sorry.You didn't get my number.(It was #{target}."
end
运行结果展示:
1、运行程序,输入姓名
2、给出自己猜的数字,并展示结果
相关代码解释:
1、chomp是Ruby库中的预定义方法,用于消除运行时用户输入的字符串附带的隐式换行符'\ n' 。 我们在Ruby中使用gets方法从用户处获取输入,但是它为字符串提供了新的一行。 chomp提供了删除它的帮助,因为大多数情况下,字符串中不需要换行符,因为当在字符串中进行某些时间处理时,换行符会产生问题。
2、
(1)rand
方法在 Ruby 中生成一个随机数。如果没有参数,范围将是 0
到 1
。
target = rand(100)+1表示目标数是0~100,如果不+1的话,范围是0~99。
(2)until循环,在不需要任何判断的情况下面,先执行一次循环体中的代码, 然后再通过until后面的判断条件来判断结果是否为“true”,如果为true,就继续执行循环体中的代码,否则就结束循环。
num_guesses = 0
guessed_it = false
until num_guesses == 10 || guessed_it
num_guesses
变量表示尝试猜测的次数,初始值为 0。guessed_it
变量用于跟踪猜测是否正确,初始值为 false
。
当 guessed_it
为 false
时,程序会提示用户猜测,直到用户成功猜中答案,才会使 guessed_it
变为 true
。此时,程序会检查 num_guesses
是否等于 10 或 guessed_it
是否为 true
。如果是,那么程序会打印一条消息,表明用户成功猜中了答案。否则,程序会继续提示用户猜测,直到用户成功猜中答案为止。
(3)to_i to_i就是将字符串转换为数值
(4)if.. elsif..end 条件语句,相当于java中的 if else
3、unless和if语句作用相反。
(1)语法
unless conditional [then] code [else code ] end
(2)参数及描述
unless | unless 条件判断使用的关键字 |
conditional | 条件判断语句,必须返回真或者假 |
(3)在 Ruby 中,unless 语句和 if 语句作用相反,即如果 conditional 为假,则执行 code。如果 conditional 为真,则执行 else 子句中指定的 code。