Monday, October 3, 2016

Aula4

Aula 4


Na aula #4 revimos alguns tipos de dados básicos: str (string), tuple e list.

Fizemos alguns exercícios de programação, inclusive uma versão do exemplo3@aula1. O objetivo foi mostrar como a implementação no espírito pythonista é espetacularmente mais simples.





Dado um texto, conte o número de palavras que contém a letra a e a letra b

Solução força-bruta:

''' Conta o numero de palavras nde um texto que contenha a letra a e a letra b.
    Percorre o texto caracter por caracter mantendo dois estados:
                     1 => fora de uma palavra
                     2 => dentro de uma palavra
    No estado 2 mantem dois flags, acheiA e acheiB para lembrar
    se achou as letras a e b respectivamente.
    No estado 2 quando ambos flags forem verdadeiros, incrementa
    a contagem de palavras e lembra o feito para evitar contagem
    repetida da mesma palavra.
'''


txt = input()
conta = 0

# flags de controle dos estados
na_palavra = txt[0].isalnum()
acheiA = False
acheiB = False
ja_contei = False

# percorre o texto caracter a caracter
for car in txt:
    # verifica se entrou numa palavra
    if not na_palavra:
            if car.isalnum():
                # entrou numa palavra
                na_palavra = True
    else:
        # estavamos numa palavra: verifica se palavra terminou
        if not car.isalnum():
            # palavra terminou: reseta todos flags
            na_palavra = False
            acheiA = False
            acheiB = False
            ja_contei = False

    # se estamos numa palavra, verifica se caracter é 'a' ou 'b'
    if na_palavra:
        if car == 'a':
            acheiA = True
        if car == 'b':
            acheiB = True
           
        # se palavra contem a e b, incrementa contagem de palavras
        if acheiA and acheiB:
            # mas somente se ainda não tinha contado esta palavra
            if not ja_contei:
                conta = conta + 1
                ja_contei = True

# imprime numero de palavras encontradas

print('Numero de palavras encontradas = ', conta) 



Solução estilo pythonista:

'''
Conta palavras no texto que contenham a letra a e tambem a letra b.
'''


txt = input()
lst = txt.split()
wrd = [x for x in lst if 'a' in x and 'b' in x]

print('Numero de palavras encontrado =', len(wrd)) 






 
Recomendo que leiam os tópicos relevantes em Recursos. Leiam tambem o texto e exemplos relevantes no tutorial oficial do Python

Depositei o material da aula 4 no dropbox, aqui



1 comment: