如何根据用户输入添加到Ruby数组?

时间:2016-05-23 10:52:00

标签: ruby input range

我要求用户输入一个数字,并根据该数字我想在游戏中添加某些玩家。

class Player
  def players_playing
    players = []
    puts('How many players are playing?')
    players_amount = gets.chomp
    for i in range(players_amount)
      puts ('What is the players name')
      name = gets.chomp
      players.push(name)
    end
  end
end

因此,如果他们输入3.那么代码应循环3次并询问用户名称。 e.g。

What is the players name? Rich
What is the players name? Tom
What is the players name? Charles

然后会有玩家= [' Rich',' Tom',' Charles']

我的代码不正确的任何想法? (我想这可能与range部分有关)

2 个答案:

答案 0 :(得分:1)

您的代码中存在一些错误:

首先你要求一个数字,但是players_amount是一个字符串。您应该使用to_i方法进行转换。

然后,为了迭代一个范围,有几种方法可以在Ruby中完成,但是在Python中没有关键字range。要迭代范围(即间隔),请使用:

# Exclusive: 

(0...3).each do |i|
    puts i
end
# 0
# 1
# 2

# Inclusive:

(0..3).each do |i|
    puts i
end
# 0
# 1
# 2
# 3

因此,只需编写(0...players_amount).each do

,而不是for循环

通过这些修改,程序具有预期的行为。但是,如果您希望名称显示在问题的同一行,请使用print代替puts,因为puts会在字符串末尾自动添加换行符。

答案 1 :(得分:0)

我会补充T. Claverie的回答。在这种情况下,我猜你只需要迭代一定次数而不对迭代索引做任何事情。这样,我会用以下内容替换代码中的for循环:

players_amount.times do
  puts ('What is the players name')
  name = gets.chomp
  players.push(name)
end

希望它有所帮助。