【问题标题】:I am unable to break a loop that repeatedly asks for user input. Anyone know how to solve this?我无法打破反复要求用户输入的循环。有谁知道如何解决这个问题?
【发布时间】:2016-10-18 18:23:00
【问题描述】:

我正在尝试创建一个循环,该循环将向用户询问一个整数,然后将打印“hi”一个整数次,然后再次要求输入。然后,如果用户输入“再见”,我希望循环中断。

到目前为止我的代码:

 def hi_hi_goodbye
   loop do
     number = gets

      (number.to_i).times do 
          print "hi" 
      end

      break if 
          gets == "bye"
      end

 end

到目前为止,我的代码不会循环。它接收整数并打印“hi”给定的次数。但是,我无法打破循环。

【问题讨论】:

  • 那么您实际上在哪里更改gets
  • 从您的代码看来,您得到了一个 SyntaxError,其中提到了 end,因此您在各处添加了 ends,直到错误消失。但是,print "hi" end 中的 end 到底在做什么?倒数第二个end 在做什么?如果您花时间用传统缩进重新格式化您的代码,您就会明白为什么您的代码现在没有按照您的意愿行事。
  • 感谢您注意到乔丹。那是我的一个错字。我现在已经编辑出来了。我输入的问题太快了,由于沮丧,我忘记了重新阅读。道歉。我的问题仍然存在。

标签: ruby io


【解决方案1】:

试试

 break if gets.chomp == "bye"

之所以如此,是因为您的输入类似于bye\n,因此您的条件始终为假,因为gets 甚至输入。

【讨论】:

  • 我解释了原因。因为bye\n 永远不会等于bye
  • 成功了!非常感谢。我从来没有意识到它甚至需要输入!
猜你喜欢
  • 1970-01-01
  • 2019-05-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-15
  • 2021-08-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多