红宝石正则表达式

use*_*333 0 ruby

我正在尝试创建一个程序,用户使用正则表达式输入四个数字.如果其中一个数字是13,则左边的数字不计入总和.我的问题是创建一个异常,其中没有数字等于13.我似乎无法找到我的异常的正则表达式

puts "enter a number then hit enter four times"

number1 = STDIN.gets

number2 = STDIN.gets
number3 = STDIN.gets

number4 = STDIN.gets


if number1 =~ /13/ then
  puts number2.to_i + number3.to_i + number4.to_i
end

if number2 =~/13/ then
  puts number3.to_i + number4.to_i
end

if number3 =~/13/ then
  puts number4.to_i
 if number4 =~/13/ then
   puts "0"
 end
 if number1 != 13 or number2 != 13 or number3 != 13 or number4 != 13
   puts number1.to_i + number2.to_i + number3.to_i + number4.to_i
 end
end
Run Code Online (Sandbox Code Playgroud)

gma*_*tte 6

我并不是要重写你的整个逻辑,但你可以使用枚举模块并做类似的事情

puts "enter a number then hit enter four times"

# Collect 4 numbers
numbers = 4.times.map{ STDIN.gets }.reverse

# Take the numbers until the first 13, then sum them
puts numbers.map(&:to_i).take_while{ |a| a != 13 }.reduce(:+)
Run Code Online (Sandbox Code Playgroud)

  • 为什么不"4次...结束?" (2认同)