gpt4 book ai didi

Ruby 打破循环的麻烦

转载 作者:数据小太阳 更新时间:2023-10-29 08:48:10 25 4
gpt4 key购买 nike

好吧,我有金鱼般的编程天赋,所以我需要一些帮助。我有以下代码(请原谅我糟糕的幽默感):

puts 'Do you have a middle name?'
answer=gets.chomp.downcase
while true
if answer != ('yes' || 'no')
puts 'Yes or no answers only, dumbass.'
puts 'So I\'ll ask again. Do you have a middle name?'
answer=gets.chomp.downcase
elsif answer == ('yes' || 'no')
if answer == 'yes'
puts 'Cool. What is it?'
middlename=gets.chomp
puts middlename +'? That\'s dumb.'
break
if answer == 'no'
puts 'I guess you aren\'t cool enough.'
break
end
end
end
end
puts 'Well, smell ya later.'

它基本上工作正常,但我有一个问题:选择 no 选项。我不知道如何让它发挥作用。它会很好地循环,并且选择 yes 选项有效。

基本上,我的问题是:如何创建具有两个中断选项的循环?

最佳答案

对于这样的事情,你应该使用 case/when,这是一个 Ruby switch 语句,因为所有这些 if/end block 会很快变得困惑。

另请阅读本指南: https://github.com/bbatsov/ruby-style-guide它将教您如何正确格式化您的 ruby​​ 代码。

puts 'Do you have a middle name?'
answer=gets.chomp.downcase

case answer
when 'yes'
puts 'Cool. What is it?'
middlename=gets.chomp
puts middlename +'? That\'s dumb.'
when 'no'
puts 'I guess you aren\'t cool enough.'
else
puts 'Yes or no answers only, dumbass.'
puts 'So I\'ll ask again. Do you have a middle name?'
answer=gets.chomp.downcase
end

puts 'Well, smell ya later.'

如果您总是希望它在他们不回答yesno循环。您可以通过将代码块包装在 loop 中来实现,如下所示:

puts 'Do you have a middle name?'
answer=gets.chomp.downcase

loop do
case answer
when 'yes'
puts 'Cool. What is it?'
middlename=gets.chomp
puts middlename +'? That\'s dumb.'
break
when 'no'
puts 'I guess you aren\'t cool enough.'
break
else
puts 'Yes or no answers only, dumbass.'
puts 'So I\'ll ask again. Do you have a middle name?'
answer=gets.chomp.downcase
end
end

puts 'Well, smell ya later.'

查看此答案:How to write a switch statement in Ruby

关于Ruby 打破循环的麻烦,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21195789/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com