不能从Chris Pine的Learn to Program中退出聋人奶奶的循环

时间:2016-07-09 20:59:49

标签: ruby abort

我正在通过克里斯派恩的学习计划,并坚持锻炼聋人Gradma 。该计划的目的是让奶奶回答HUH ?!说起来,SONNY!你说的任何事情,除非你说出所有的资本(在这种情况下她回答NO,而不是#{random year}!)或者如果你连续三次迭代说BYE(在这种情况下程序结束)。所以基本上程序会永远持续下去,除非你连续三次迭代说BYE。

while true
  byes = 0
  say_to_grandma = gets.chomp
  if say_to_grandma == "BYE"
    byes += 1
  else
    byes = 0
  end
  if byes == 3
    abort
  end
  if say_to_grandma != say_to_grandma.upcase
    puts "HUH?! SPEAK UP, SONNY!"
  else
    random_year = rand(90) + 1926
    puts "NO, NOT SINCE #{random_year}!"
  end
end

我无法解决的问题是结束该计划。我进行了广泛的研究,但无法找到解决方案。我尝试退出并中止,但他们没有像我期望的那样工作。或许我的逻辑可能有问题。

1 个答案:

答案 0 :(得分:0)

为了给这个问题一个真正的答案,既然OP已经弄明白了,我将明确说明问题:

循环中

byes设置为0。这意味着每次迭代,无论你说什么或做了什么,它都会将数字重置为0,然后再提示你说些什么。要解决此问题,只需将该行 - byes = 0 - 移至while上方的行。