我要求用户输入一个数字,并根据该数字我想在游戏中添加某些玩家。
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
部分有关)
答案 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
。
通过这些修改,程序具有预期的行为。但是,如果您希望名称显示在问题的同一行,请使用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
希望它有所帮助。