Ruby |建造金字塔的方法有问题

Ruby | Problem with method for build pyramids

我已经有一个程序可以让你用“#”构建一个金字塔,但我想用方法创建一个新文件。我不明白为什么它不起作用。我已经测试了很多代码。我什至删除了 25 个故事循环。

puts "Salut, bienvenue dans ma super pyramide ! Combien d'étages veux-tu ?"

print ">"

etages = gets.chomp.to_i
espace = etages - 1
carre = 1

while etages > 25 
    puts "Réessayez ! La pyramide ne doit pas excéder 25 étages !"
    print "> "
    etages = gets.chomp.to_i
  end

etages.times do
    espace.times do
        print " "
      end
     espace -= 1
    carre.times do
        print "#"
        end
        carre += 2
        puts " "
    
    
end

def ask_etages
    puts "Salut, bienvenue dans ma super pyramide ! Combien d'étages veux-tu ?"
    print ">"
    etages = gets.chomp
    return etages
end

def full_pyramid
    espace = etages - 1
    carre = 1

    etages.times do
        espace.times do
            print " "
          end
         espace -= 1
        carre.times do
            print "#"
            end
            carre += 2
            puts " "
           
    end

        end
    

def perform
    ask_etages
    full_pyramid
end

perform

基本上你需要将变量espace传递给你的方法full_pyramid,所以你只需要一个小的改变。

由于 ask_etages 要求用户输入(旁注:使用 puts 而不是 print)然后 returns 该值作为整数需要传递给它至 full_pyramid.

这样做只需将方法定义为:

def full_pyramid(etages)
  espace = etages - 1
  carre = 1
  etages.times do
    espace.times do
      print " "
    end
    espace -= 1
    carre.times do
      print "#"
    end
    carre += 2
    puts " "
  end
end

然后定义perform为:

def perform
    full_pyramid(ask_etages)
end