print "please enter a sentence with a letter s"
while user_input = gets.chomp.downcase!
case user_input
when user_input.include? "s"
user_input.gsub(/s/,"th")
print "Daffy Duck says #{user_input}"
break
else
print "please enter a sentence with a letter s"
end
我希望“请输入一个带有字母S的句子”循环,直到用户输入字母“S”
我的理解是,用户输入句子,直到其中包含一个“s”
或一个“s”
,此时采取某种操作,程序终止。
让我们看看你有什么。
print "Please enter a sentence with a letter s"
我认为您希望puts
,它添加换行符,而不是print
,它不添加换行符。
while user_input = gets.chomp.downcase!
str0 = gets
#=> "Cat\n"
str1 = str0.chomp
#=> "Cat"
user_input = str1.downcase!
#=> "cat"
str1
#=> "cat"
user_input
#=> "cat"
while "cat"
while true
因此,执行移动到while
循环中的第一条语句。假设用户输入“cat”
并按下Enter键。然后
str0 = gets
#=> "cat\n"
str1 = str0.chomp
#=> "cat"
user_input = str1.downcase!
#=> nil
str1
#=> "cat"
user_input
#=> nil
这样程序就不会进入while
循环!您会问,“cat”.downcase
如何返回nil
?查看文档中的字符串#downcase!。它显示,如果没有要取消大小写的字符,则返回nil
。Ruby有许多方法也这样做:如果接收者没有改变,则返回nil
。(在你受教育的这一点上,不要被“为什么”转移话题。)目前,建议您避免使用bang方法(以“!”
)结尾。
同样,如果用户没有输入任何内容并按下enter键,
str1 = "\n".chomp
#=> "" (an empty string)
user_input = str1.downcase
#=> nil
“”.downcase!
返回nil
,其原因与“cat”.downcase!
相同。
我想你这里什么是下面。
user_input = gets.chomp
while !user_input.match?(/s/i)
/s/i
是一个正则表达式,用于确定字符串是否包含“s”
或“s”
。/i
中的i
是大小写无关修饰符。(可以在user_input!~/s/i时编写。)
case user_input
当
case
有一个参数(这里是user_input
)时,When
语句包含的参数是case
参数的可能值,例如
case user_input
when "call me silly!"
puts "You are silly"
when...
这里不是这样做的,所以您希望
case
单独出现在一行上:
case
when user_input == ...
...
end
但是,这里不需要在循环中使用case语句或“if/elsif/else/end”构造,因为我们已经确定
user_input
不包含“s”。我们在循环中需要的是:
while !user_input.match?(/s/i)
puts "Please enter a sentence with a letter s"
user_input = gets.chomp
end
puts "Daffy Duck says #{user_input}"
#=> "Quack, quack, quackity-quack, sir"
注意你的声明
user_input.gsub(/s/, "s")
将每个“s”替换为“s”。:-)也不需要
break
关键字。
把所有这些放在一起,你可以写:
puts "Please enter a sentence with a letter s"
user_input = gets.chomp
while !user_input.match?(/s/i)
puts "Please enter a sentence with a letter s"
user_input = gets.chomp
end
puts "Daffy Duck says #{user_input}"
你以为我完蛋了。别这么快!
首先,许多Ruby程序员试图避免否定,比如
while!user_input.match?(/s/i)
(尽管这纯粹是品味问题)。你可以写这一行
until user_input.match?(/s/i)
一个更重要的问题是代码的复制。您可以通过使用kernel#loop和关键字
break
而不是while
或tile
来改进这一点。
loop do
puts "Please enter a sentence with a letter s"
user_input = gets.chomp
if user_input.match?(/s/i)
puts "Daffy Duck says #{user_input}"
break
end
end
但是,如果我们写了
loop do
puts "Please enter a sentence with a letter s"
user_input = gets.chomp
break if user_input.match?(/s/i)
end
puts "Daffy Duck says #{user_input}"
最后一行将引发异常
NameError (undefined local variable or method `user_input' for main:Object)
因为变量
user_input
只在循环中定义。
我正在做一个问题,其中我为拼字游戏创建了各种功能。首先,我想让用户输入或或开始新游戏/重放最后一手牌/结束游戏。 一旦游戏开始,我想让用户输入或来让用户或计算机玩。 我陷入了问题的最后一部分。 我的代码: 如果内部循环的选择不是u或c,它应该反复通知并询问,直到u或c是输入。但它是在初审后从那个循环中出来的。 理想输出: 我的输出: 问题是,当用户在第二级输入无效命令时,我的代码开始询问第一级的问
我创建了以下类,用于输入用户的年龄,然后在控制台中显示适当的信息。 运行此程序时,控制台会询问“请输入您的年龄:”
我正在写一个叫做hangman.py的程序。在我的程序中,用户不能在我的输入中输入“?”或空白。例如,用户不能输入“?xx?xx?”或“我该怎么做”。但用户可以输入诸如“ldkdjgg”或“stop-go”之类的内容。如果用户输入诸如“?xxxxx”或“我该怎么做”之类的内容,我必须不断询问用户请输入一个不包含的要猜测的单词?或空白:“.我的问题是如何打印”请输入一个不包含字符的要猜测的单词?或空
我需要在Google Analytics中显示用户在字段中输入的值。但我不需要查看字段上的点击次数。请帮帮我。
我正在尝试将输入验证添加到一组三个 ,用户在其中输入数值。我面临的问题是,为了使计算正常工作,用户无法输入零作为输入字段之一,否则应用程序将崩溃。 我尝试实现以下操作以防止输入零并显示警告消息。我收到一条错误消息,指出“无法启动活动calcResult”,这是显示计算的活动。 这是错误日志的链接:http://pastebin.com/hDsabjR6 我从这里了解到,零值仍然在通过验证,但我不知
问题内容: 我有一个简单的PHP邮件程序脚本,该脚本从通过POST提交的表单中获取值并将其邮寄给我: 如何清除输入内容? 问题答案: 用清理发布变量。 这里的例子。喜欢: