Solicitação de algoritmo 13 – pesquisa de opinião

Algoritmo foi solicitado pelo Mauricio e é um algoritmo que realiza uma pesquisa de opinião, mostrando alguns resultados. Segue o enunciado.

Enunciado: a empresa Cara de Pau Ltda resolveu fazer uma pesquisa de mercado, abrangendo o maior número de pessoas possíveis, para saber se as pessoas estão gostando ou não de um novo produto lançado no mercado.
A informações coletadas são: o sexo (M,F), idade e uma resposta (S=sim, N=não, I=indiferente) de cada entrevistado.

Faça um algoritmo que calcule:

  • quantas pessoas foram entrevistadas;
  • quantas pessoas disseram sim e quantas disseram não;
  • quantas mulheres disseram sim e quantos homens disseram não.

Embora o enunciado tenha pedido para ler a idade do entrevistado, esse dado não é realmente utilizado, mas como está no enunciado está sendo lido mesmo assim. O código enviado estava praticamente pronto, mas o Mauricio só estava conseguindo contabilizar o sexo dos participantes e não sua opinião.

O código feito pelo Mauricio segue abaixo. Veja que linha 6 é lido qual o sexo do entrevistado, mas com o uso da função strip() e o índice [0] é pego somente a primeira letra do que é digitado e o uso da função upper() coloca a letra maiúsculo. Veja que somente essa primeira letra é importante, uma vez que na linha seguinte a comparação com o valor lido é feita considerando somente um caractere.

totM = totH = 0
while True:
    idade = int(input('idade: '))
    sexo = ' '
    while sexo not in 'MF':
        sexo = str(input( 'Sexo: [Masculino/Feminino]')).strip().upper()[0]
    if sexo == 'M':
        totH += 1 
    if sexo == 'F':
        totM += 1 
    pesquiza = ' ' 
    while pesquiza not in 'SNI':
        pesquiza = str(input( 'Gostou do novo produto da empresa cara de pau?')).strip().upper() [0]
    
    resp = ' '   
    while resp not in 'SN':
        resp = str(input('Quer continuar? [S/N]')).strip().upper()[0]
    if resp == 'N':
        break
print(f'Total de mulheres:{totM}')
print(f'Total de homens:{totH}')
print(f'Ao todo temos {totM} mulheres e {totH} homens entrevistados \n')

Na linha 5 no código do Mauricio, ele colocou um comando while para garantir que o usuário fornecesse um entrada válida para o sexo. Enquanto não for fornecido as letras M ou F, o sexo é perguntado novamente. Isso é muito importante de ser feito, mas na minha solução a seguir eu retirei para ficar mais fácil entender a solução elaborada. A versão simplificada do código do Mauricio é mostrada a seguir.

totM = totH = 0
while True:
    idade = int(input('idade: '))
    sexo = str(input( 'Sexo: [Masculino/Feminino]')).strip().upper()[0]
    if sexo == 'M':
        totH += 1 
    if sexo == 'F':
        totM += 1 
    
    resp = str(input('Quer continuar? [S/N]')).strip().upper()[0]
    if resp == 'N':
        break

print(f'Total de entrevistados:{totH+totM}')

O código acima contabiliza quantos entrevistados eram homem ou mulher, sendo o primeiro item a ser mostrado determinado pela soma desses dois valores (conforme mostrado na linha 14).

Para contabilizar a opinião de cada entrevistado são necessárias mais variáveis. Poderiam ser definidas variáveis para contabilizar os votos em SIM, NÃO e INDIFERENTE, mas eu preferi contabilizar apenas a quantidade de SIM e INDIFERENTE (com isso economizei variáveis e algumas linhas de código). Isso porque, como se saberá a quantidade de votantes, a quantidade de NÃO pode ser obtida pegando a quantidade total de voto e subtraindo a quantidade de SIM e INDIFERENTE. Seria mais fácil contabilizar os SIM e NÃO, mas eu fiz de propósito a contabilização do INDIFERENTE para complicar e deixar mais claro que é possível contabilizar os votos sem precisar ter variáveis para cada tipo de resposta. Esses cálculos são feitos lá no final do código.

totM = totH = 0
totMS = totHS = 0
totMI = totHI = 0
while True:
    idade = int(input('idade: '))
    sexo = str(input( 'Sexo: [Masculino/Feminino]')).strip().upper()[0]
    if sexo == 'M':
        totH += 1 
    if sexo == 'F':
        totM += 1 

    pesquisa = str(input( 'Gostou do novo produto da empresa cara de pau? [Sim/Nao/Indiferente]')).strip().upper() [0]
    if pesquisa == 'S':
        if sexo == 'M':
            totMS += 1
        else:
            totHS += 1
    elif pesquisa == 'I':
        if sexo == 'M':
            totMI += 1
        else:
            totHI += 1
    
    resp = str(input('Quer continuar? [S/N]')).strip().upper()[0]
    if resp == 'N':
        break

print(f'Total de entrevistados:{totH+totM}')
print(f'{totMS + totHS} entrevistados disseram SIM e {(totH+totM) - (totMS+totHS) - (totMI+totHI)} disseram NAO')
print(f'{totMS} mulheres disseram SIM e {totH - (totHS+totHI)} disseram NAO')

Teste o código: https://py3.codeskulptor.org/#user307_gudClmf7uq_0.py

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.