• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

Guest s33k_

[Resolvido] Ajuda programa python

17 mensagens neste tópico

Ajudo-te, não te faço o código :)

Pedes ao utilizador a frase e guardas numa string

Fazes um split à string para whitespaces - ficas com cada palavra um item de uma lista.

Comparas essa lista com uma lista previamente feita de artigos definidos e indefinidos

Caso haja iguais: tiras da lista com um pop da posição e dizes ao utilizador.

No fim desse "processamento", hás de ter só as palavras. Não sei até que ponto um sort() não te ajuda aí B)

Boa Sorte e posta o resultado final!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

texto = raw_input ('Escreva uma texto: ')
dados = texto.split()
dados.sort()
artigos = ['o', 'a', 'os', 'as', 'um', 'uma', 'uns', 'umas']
if artigos in texto:
    del dados[artigos]

   

e agora?? nao sei fazer mais!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

bukz, em vez de fazeres esse if, metes um for que é mais fácil de depois fazer o restante. :) Sem contar que duvido que esse if funcione como esperado.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Eu tinha-lhe dito para ele usar um for para iterar nas palavras diferentes (separadas pelo split). Era o mais prático a fazer..

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ya ya ... ja sei xD

epah...

digamos k sou novo em py e k o meu prog. fikou alguma coisa parecida com isto :

#!/usr/bin/env python
#coding: utf-8
# python!!!!!!


lista = []
lista_artigos = ['o','a','os','as','um,','uma','uns','umas']
delimiter = ' '
a = raw_input('digita a frase : ')
lista.append(a)
a.split(delimiter)
lista.sort()
for artigo in lista_artigos:
    if artigo in lista:
        del artigo
print lista

atençao!

o programa nao esta todo aqui!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Podes sempre tratar a variável texto como uma string e aplicar o split sobre ela. Alem do mais, ao fazeres esse split, não vais separar palavras, só as separadas por vírgulas. Experimenta o split em branco (separa por whitespaces).

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Já fiz o programa, e funciona eheh. :) Só falta fazer o case-insensitive sort.

EDIT: Vi agora um bug. B)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Bug em quem? B) (deixaste-me curioso..vou fazer eu o meu :))

No meu programa. :P Tenho um bug na stristr(). Ou melhor, no uso da stristr().
0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Mas fizeste em PHP ou python? :)

Btw, fica aqui a minha source. Aprendi esta nova do cmp. Não fazia ideia B)

#! /usr/bin/python
# -*- coding: iso-8859-15 -*-
# Programa que ordena palavras de uma frase alfabeticamente

import string

frase = raw_input('Digite uma frase: ').split(' ') # Pede a frase ao utilizador

artigos = ['a', 'as', 'um', 'uns', 'uma', 'umas', 'o', 'os'] # Lista que define os artigos

for palavra in frase:
    if palavra.lower() in artigos:
        print "\nArtigo excluido -->",palavra
        index = frase.index(palavra)
        frase.pop(index)

frase.sort(lambda x,y: cmp(x.lower(), y.lower())) # Esta precisa de explicação

""" cmp() is the built-in function that compares two objects, x and y, and returns a negative number, 0 or a positive number depending on whether x<y, x==y, or x>y

On a more verbose approach:

>>> def numeric_compare(x, y):
>>>    return x-y"""

print "\n\nPalavras ordenadas:",frase

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

ena sinto-me msm mal LOL .... a unica cena k consegui fazer foi akilo xD

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Na mesma, mostra lá o teu código. Tou curioso pa ver o tal stristr ;)

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está vergonhoso, I admit it, mas foi feito à pressa. Até agora, sei que tenho um bug na contagem dos artigos que vão sendo removidos e o .sort().

#! /usr/bin/python
# -*- coding: utf-8 -*-

import string

def stristr(agulha, palheiro):
    i = 0
    limite = len(agulha)
    for char in palheiro:
        if agulha[i] == char:
            i += 1
        elif agulha[i] in string.ascii_lowercase:
            if agulha[i].upper() == char:
                i += 1
        elif agulha[i] in string.ascii_uppercase:
            if agulha[i].lower() == char:
                i += 1
        else:
            i = 0
        if i == limite:
            return True

    return False

palavras = "O Manel disse ao João que o gajo era um ganda maluco lume e para contar \"UM! DOIS! TRÊS!\". Wee, lulz @ umas bifas."

artigos = {
            "os": 0,
            "o": 0,
            "as": 0,
            "a": 0,
            "uns": 0,
            "umas": 0,
            "uma": 0,
            "um": 0}

for sinal in ",.!?;:'\"": palavras = palavras.strip(sinal)

palavras = palavras.split()

final = []
i = 0
saltar = False
for palavra in palavras:
    for artigo in artigos:
        if stristr(palavra, artigo):
            artigos[artigo] += 1
            saltar = True
            break
    if not saltar and palavra != '':
        final.append(palavra)
    else: saltar = False

print 'Na frase\n\t%s\n\nforam encontrados e removidos os seguintes artigos:' % (frase)
for artigo in artigos:
    if artigos[artigo] > 0:
        print "-> %s (%i vezes)" % (artigo, artigos[artigo])

print
print "As palavras por ordem alfabética são: (still buggy)"
final.sort() #este sort() não faz sort por letra mas por ascii code, daí o bug

for palavra in final:
    print palavra

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora