Created
October 3, 2013 19:46
-
-
Save diegorocha/6815952 to your computer and use it in GitHub Desktop.
Desafio #3 da Globo.com na Python Brasil [9]
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| #!/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