ruby 我的程序有问题,我不明白

Problem with my program with ruby, i don't understand

puts "Quel âge tu as ?"

print ">"

age = gets.chomp.to_i
i = 0

    
while age > 0 

    

    puts "Il y a " + age.to_s + " ans" + " tu avais : " + i.to_s + " ans"
    age -= 1
    i += 1 

    break if age = i
    puts "Il y a " + age.to_s + " ans" + " tu avais la moitié de ton âge !"
    age = i
end
    

我在 Ruby Rails 上的程序有问题。我提前为我的英语道歉。

我通过做一个练习来训练这门语言,这个练习可以让你输入你的年龄,并查看你在给定年份的年龄。

但是举个例子。当我们达到一半年龄时,例如 20 岁我要显示(法语)

“十年前,你只有一半的年龄!”

我想感谢“break if”,但它只产生一行代码。 我希望你已经明白了,否则请不要犹豫,要求澄清。

提前致谢。

break 不一定需要是一行,在满足条件后你可以单独拥有 break,而且你的代码中有一个问题,你正在与= 而不是 ==


if (condition == true)
  break 
end

您的代码可能看起来像

puts "Quel âge tu as ?"

print ">"

age = gets.chomp.to_i
i = 0

    
while age > 0 

    

    puts "Il y a " + age.to_s + " ans tu avais : " + i.to_s + " ans"
    age -= 1
    i += 1 

    if age == i
        puts "Il y a " + age.to_s + " ans tu avais la moitié de ton âge !"
        break
    end
end

注意:我还可以指出,如果输入的年龄为奇数

,您的代码将不会显示"Ten years ago, you were half your age!"

一个break statement stops your while loop. You probably want an if expression:

while age > 0
  if age == i
    puts "Il y a #{age} ans tu avais la moitié de ton âge !"
  else
    puts "Il y a #{age} ans tu avais : #{i} ans"
  end
  age -= 1
  i += 1
end

您可以使用 downto and with_index:

摆脱手动递增/递减
age.downto(1).with_index do |a, i|
  if a == i
    puts "Il y a #{a} ans tu avais la moitié de ton âge !"
  else
    puts "Il y a #{a} ans tu avais : #{i} ans"
  end
end