Chris Pine 的 Learn to Program 中无法退出聋人奶奶的循环
Can't exit loop in Deaf Grandma from Learn to Program by Chris Pine
我正在学习 Chris Pine 的《学习编程》,但在练习 Deaf Gradma 上卡住了。该计划的目的是让奶奶回答 HUH?!大声说,桑尼!对你说的任何话,除非你说的都是大写(在这种情况下她回答不,不是自#{随机年份}!)或者如果你连续三次迭代说再见(在这种情况下程序结束)。所以基本上程序会一直运行下去,除非你对三个连续的迭代说 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
我无法解决的问题是结束程序。我进行了广泛的研究,但找不到解决方案。我试过退出和中止,但它们没有像我预期的那样工作。或者我的逻辑有问题。
为了给这个问题一个实际的答案,既然OP已经弄清楚了,我将明确说明问题:
byes
在循环中被设置为 0。这意味着每次迭代,无论你说了什么或做了什么,它都会在提示你再次说些什么之前将数字重置为 0。要解决此问题,只需将该行 - byes = 0
- 移动到 while
上方的行。
我正在学习 Chris Pine 的《学习编程》,但在练习 Deaf Gradma 上卡住了。该计划的目的是让奶奶回答 HUH?!大声说,桑尼!对你说的任何话,除非你说的都是大写(在这种情况下她回答不,不是自#{随机年份}!)或者如果你连续三次迭代说再见(在这种情况下程序结束)。所以基本上程序会一直运行下去,除非你对三个连续的迭代说 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
我无法解决的问题是结束程序。我进行了广泛的研究,但找不到解决方案。我试过退出和中止,但它们没有像我预期的那样工作。或者我的逻辑有问题。
为了给这个问题一个实际的答案,既然OP已经弄清楚了,我将明确说明问题:
byes
在循环中被设置为 0。这意味着每次迭代,无论你说了什么或做了什么,它都会在提示你再次说些什么之前将数字重置为 0。要解决此问题,只需将该行 - byes = 0
- 移动到 while
上方的行。