我的Ruby代码中有一段代码片段:
while words.size >= 3
frequency["#{words[0]} #{words[1]} #{words[2]}"] += 1
words.shift
end
我想设置一个变量i
,并根据i
的值,运行相应的代码。例如i=2
:
while words.size >= 2
frequency["#{words[0]} #{words[1]}"] += 1
words.shift
end
更改while
条件中的值很简单,但如何根据变量i
复制循环体?
答案 0 :(得分:1)
您可以在循环中使用if..else语句轻松完成此操作:
while words.size > 0
if words.size >= 3
frequency["#{words[0]} #{words[1]} #{words[2]}"] += 1
elsif words.size >=2
frequency["#{words[0]} #{words[1]}"] += 1
else
break
end
words.shift
end
然而,这是Ruby,基于你如何创建这些键,它很容易说:
while words.size >= 2
frequency[words.first(3).join(" ")] += 1
words.shift
end
这将占用单词数组中的前三个元素,并将它们与空格连接,为您提供频率键。如果只剩下两个单词,它将同时使用它们。