我的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复制循环体
发布于 2013-04-11 08:52:09
您可以在循环中使用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这将从单词array中获取最多前三个元素,并将它们与空格连接起来,为您提供频率键。在只剩下两个单词的情况下,它将同时使用这两个单词。
https://stackoverflow.com/questions/15939004
复制相似问题