Calculate the age group of 10 people within a repeat loop?

Asked

Viewed 1,537 times

0

Below is the code I am using, this presenting the following error:

SyntaxError: invalid syntax
maycon@maycon-H14SU08:~/Documentos/Algoritimos$ python3 prova_lista.py 
  File "prova_lista.py", line 23
    elif 18 pessoas <= 65:

Make a program that, using a repeat loop, receives the age of 10 people, calculate and show the amount of people in each age group according to the legend:

  • Minor - 0 to 17 years old
  • Young - 18 to 65 years old
  • Middle age - 66 to 79 years old
  • Aged - 80 to 99 years
  • Long-lived elderly - 100 or more
pessoas = [""] * 10

i = 0
soma = 0

while i < len(pessoas):
    pessoas[i] = int(input("Digite a sua idade: "))
    soma = soma + pessoas[i]
    i = i + 1

i = 0
soma = 0

while i < len(pessoas):

    pessoas = pessoas[i]
    pessoas = int(pessoas)

    soma = soma + pessoas
    i = i + 1

    if pessoas < 17:
        print("--- Menor de Idade ----")
        break

    elif 18 < pessoas <= 65:
        print("--- Jovem ---")
        break

    elif 66 < pessoas <= 79:
        print("--- Meia Idade ---")
        break

    elif 80 < pessoas <= 90:
        print("--- Idoso ---")
        break

    elif pessoas >= 100:
        print("--- Idoso de Vida Longa ---")
        break

3 answers

6

lacked the comparison operator < between number and variable

elif 18 pessoas <= 65:

should be

elif 18 < pessoas <= 65:

The same for all other comparisons made.

EDIT: I believe that you do not need to store all people... but the total number of people who are in each age group. See below the full code:

# cria variáveis para cada categoria com o valor zero:
menor = jovem = meia_idade = idoso = vida_longa = 0

# repete 10 vezes:
for n in range(10):
    idade = int(input("Digite a sua idade:"))

    # apos digitar cada idade, classifica a pessoa e incrementa a variavel certa:
    if idade <= 17:
        menor = menor + 1
    elif 17 < idade <= 65:
        jovem = jovem + 1
    elif 65 < idade <= 79:
        meia_idade = meia_idade + 1
    elif 79 < idade <= 99:
        idoso = idoso + 1
    else:
        vida_longa = vida_longa + 1

# Após processar as 10 pessoas, imprime o resultado

print("Menores de idade: ", menor)
print("Jovens: ", jovem)
print("Pessoas de meia-idade: ", meia_idade)
print("Idosos: ", idoso)
print("Idosos de vida longa: ", vida_longa)
  • I understand, but still presenting the error: Traceback (Most recent call last): File "prova_lista.py", line 20, in <module> if people <= 17: Typeerror: '<=' not supported between instances of 'list' and 'int'

  • 1

    Yes @Mayconwillianalvesdasilva, but this is another different error, caused by another problem, this time of logic - you can not compare lists with numbers.

  • Ok, in case I should convert the list to whole. The program runs normally, but only displays the first age group in the if block.

  • 1

    @Mayconwillianalvesdasilva I think you do not need a list, after all, the statement did not have to store all people. You edited the question but the error remains the old one, edit also the error

  • 1

    @Mayconwillianalvesdasilva edited my answer and put an example of solution to your problem, I hope to have helped, if you have any questions in understanding can open another question or if it is the case, ask here

3

pessoas = [""] * 10

i = 0
soma = 0

while i < len(pessoas):
    pessoas[i] = int(input("Digite a sua idade: "))
    soma = soma + pessoas[i]
    i = i + 1

    if pessoas <= 17:
        print("--- Menor de Idade ----")

    elif 18 < pessoas <= 65:
        print("--- Jovem ---")

    elif 66 < pessoas <= 79:
        print("--- Meia Idade ---")

    elif 80 < pessoas <= 90:
        print("--- Idoso ---")

    elif pessoas >= 100:
        print("--- Idoso de Vida Longa ---")

Missed note of major or minor before 'people' in your condition :)

1


To solve this issue just implement a laço de repetição and, contar to quantidade de pessoas satisfying cada uma age group.

For this, you can use the following algorithm...

# Capturando e tratando a quantidade de pessoas.
while True:
    try:
        n = int(input('Desejas inserir a idade de quantas pessoas? '))
        if n <= 0:
            print('\033[31mValor INVÁLIDO! Digite apenas números inteiros maiores que "0"!\033[m')
        else:
            break
    except:
        print('\033[31mValor INVÁLIDO! Digite apenas números inteiros!\033[m')

cont = cont1 = cont2 = cont3 = cont4 = cont5 = 0
for c in range(1, n + 1):
    # Capturando e tratando a idade de cada pessoa.
    while True:
        try:
            idade = int(input(f'Digite a idade da {c}ª pessoa: '))
            if idade < 0:
                print('\033[31mValor INVÁLIDO! Digite apenas inteiros maiores ou iguais a "0"!\033[m')
            else:
                break
        except:
            print('\033[31mValor INVÁLIDO! Digite apenas inteiros maiores ou iguais a "0"!\033[m')

    # Somando as idades por faixa etária.
    if 0 <= idade < 18:
        cont1 += 1
    elif 18 <= idade < 66:
        cont2 += 1
    elif 66 <= idade < 80:
        cont3 += 1
    elif 80 <= idade < 100:
        cont4 += 1
    elif idade >= 100:
        cont5 += 1

# Exibindo os resultados:
print(f'\033[32mMenor de Idade: {cont1}')
print(f'Jovem: {cont2}')
print(f'Meia Idade: {cont3}')
print(f'Idoso: {cont4}')
print(f'Idoso de Vida Longa: {cont5}')

Note how the code works on repl it..

Note that this algorithm also has tratamento de erros e exceções, in addition to performing the soma da quantidade de pessoas por faixa etária.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.