Skip to content

Instantly share code, notes, and snippets.

@diegorocha
Created October 3, 2013 19:46
Show Gist options
  • Select an option

  • Save diegorocha/6815952 to your computer and use it in GitHub Desktop.

Select an option

Save diegorocha/6815952 to your computer and use it in GitHub Desktop.
Desafio #3 da Globo.com na Python Brasil [9]
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from sys import argv
import unittest
class FrequenciaTest(unittest.TestCase):
def test_string_vazia(self):
self.assertEqual({}, frequencia(''))
def test_uma_letra_so_uma_vez(self):
self.assertEqual({'a': 1}, frequencia('a'))
def test_uma_letra_so_mais_de_uma_vez(self):
self.assertEqual({'a': 3}, frequencia('aaa'))
def test_uma_letra_so_mais_de_uma_maiusculo_e_minusculo(self):
self.assertEqual({'a': 3}, frequencia('aAa'))
def test_duas_letras(self):
self.assertEqual({'f': 1, 'o': 2}, frequencia('foo'))
def test_duas_letras_intercalado(self):
self.assertEqual({'a': 2, 'b': 1}, frequencia('aba'))
def test_duas_letras_maiusculo_e_minusculo(self):
self.assertEqual({'f': 1, 'o': 2}, frequencia('fOo'))
def test_contem_espaco(self):
self.assertEqual({' ': 1, 'a': 1, 'b': 1, 'f': 1, 'o': 2, 'r': 1}, frequencia('foo bar'))
pass
"""
A maneira mais prática, mas nao deve ser O(n) por causa do char in string
"""
def frequencia(string):
d = {}
string = string.lower()
for char in string:
if char in d:
d[char] += 1
else:
d[char] = 1
return d
if __name__ == '__main__':
if len(argv) == 1:
unittest.main(verbosity=2)
else:
print frequencia(argv[1])
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment