创建函数"Are you playing banjo?"。如果您的名字以字母"R"或小写开头"r",您正在演奏班卓琴



有人能解释一下我在使用ruby程序时出错的地方吗?我很难记住如何在不写太长代码的情况下让计算机理解,有什么建议吗?

def are_you_playing_banjo(name)
name = 0
i = 0
while i <= word.length
name += "Are you playing banjo? "
char = word[i] 
if char == "r" || char == "R"
puts true 
elsif 
puts false
end
i += 1
end
return name
end

您做得太多了,一路上会犯很多错误。您似乎试图测试名称中的每个字符是否为";r〃;或";R〃;,但标题上写着";以"开头;。你能想出一种方法来获得name的第一个字符并将其存储在一个变量中吗(在你的代码中,char被用作变量,这很好(?您的代码已经有一种方法来测试这个CCD_;r〃;或";R〃;,无论是真是假——这正是你想要的。以end结束,您就完成了。

您可以使用String#start_with?

# Using regexp case insensitive
"Roger".start_with?(/r/i) # => true
"roger".start_with?(/r/i) # => true
"Michael".start_with?(/r/i) # => false
# Using regexp case sensitive
"Roger".start_with?(/R/, /r/) # => true
"roger".start_with?(/R/, /r/) # => true
"Michael".start_with?(/R/, /r/) # => false
# Using string
"Roger".start_with?("R", "r") # => true
"roger".start_with?("R", "r") # => true
"Michael".start_with?("R", "r") # => false

并且在方法中

def playing_banjo?(name)
name.start_with?(/r/i)
end

puts  "What is your name?"
name = $stdin.gets.chomp
puts "You are playing banjo" if playing_banjo?(name)

最新更新