На самом деле существует очень простой способ отсканировать список и посмотреть, сколько строк содержит хотя бы одно число:
users = %w[ @jcunniet @PaulLampon @Aziliz31 @ssoumier @marionsouzeau @gaellombart @bendarag ]
users.grep(/\d/)
# => ["@Aziliz31"]
Теперь, если вы хотите узнать, сколько их, с точки зрения подсчета:
puts '%d handle contain a number' % users.grep(/\d/).length
То, что /\d/
является регулярным выражением . Они могут быть действительно сложными, но это означает «цифра». Регулярные выражения невероятно мощны, поэтому не пугайтесь их, потратив некоторое время на изучение того, как они работают, вы можете получить действительно компактные решения, подобные этому.
В вашем исходном коде есть многое, что, кажется, основано на ошибочных предположениях. Например, посмотрите, что делает n.to_s
:
n= [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
n.to_s
# => "[1, 2, 3, 4, 5, 6, 7, 8, 9, 0]"
Это довольно уродливая строка, и count
не сможет использовать ее, так как эта строка никогда не появится внутри дескриптора Twitter.
Аналогично, sum
хочет сложить вещи, хотя здесь это не кажется необходимым, так как нечего добавить.
В Ruby есть много инструментов, которые могут вам помочь. Первая проблема заключается в сужении того, какие из них вы используете для соответствующих. Следующим шагом будет расширение ваших инструментов до более экзотических, таких как sum
. Делайте это шаг за шагом, и все будет в порядке.