Can't exit loop in Deaf Grandma from Learn to Program by Chris Pine

Posted

技术标签:

【中文标题】Can\'t exit loop in Deaf Grandma from Learn to Program by Chris Pine【英文标题】:Can't exit loop in Deaf Grandma from Learn to Program by Chris PineCan't exit loop in Deaf Grandma from Learn to Program by Chris Pine 【发布时间】:2016-07-09 20:59:48 【问题描述】:

我正在阅读 Chris Pine 的 Learn to Program 并陷入了Deaf Gradma 练习。该计划的目的是让奶奶回答哈?!说出来,桑尼!对你说的任何话,除非你说的都是大写的东西(在这种情况下,她回答 NO,NOT SINCE #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

我无法解决的问题是结束程序。我进行了广泛的研究,但找不到解决方案。我尝试了退出和中止,但它们没有像我预期的那样工作。或者我的逻辑有问题。

【问题讨论】:

提示:你在哪里将byes 设置为 0? 操作。绝对 byes 不应该在那里。 【参考方案1】:

为了给这个问题一个实际的答案,既然OP已经弄清楚了,我将明确说明问题:

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

【讨论】:

以上是关于Can't exit loop in Deaf Grandma from Learn to Program by Chris Pine的主要内容,如果未能解决你的问题,请参考以下文章

oracle 跳出一个循环的问题

数据库--循环语句:loop exit when/ end loop

Can't load Assembly System.Net.Http.Formatting in .Net 解决方案

"for line in..." 导致 UnicodeDecodeError: 'utf-8' codec can't decode byte

当我收到错误信息“Can't locate getopts.pl in @INC...”时,我需要哪个模块

Can't access Phpmyadmin in ubuntu error mysqli_real_connect(): (HY000/2002)