Escreva um algoritmo em python que
receba a idade e o estado civil de várias pessoas e
imprima a quantidade de pessoas casadas, solteiras,
separadas e viúvas. O algoritmo finaliza quando for
informado o valor zero para idade.
Algum me ajuda.
Soluções para a tarefa
O programa abaixo (também anexado) conta com uma validação simples dos dados para evitar a maioria das possíveis ocorrências de exceções/erros que poderiam vir a prejudicar o funcionamento.
Perceba que isso evita problemas como a digitação de dados não inteiros para a idade, sendo que, caso seja digitado um valor negativo (ex: -3), o programa considerará o valor absoluto. Ainda, para o estado civil, é utilizada uma listagem numerada das possibilidades para evitar erros de digitação.
Caso seja dada uma entrada errada de idade ou opção do estado civil, o programa solicitada novamente até que seja passado um dado válido.
Perceba, no entanto que a validação não impede, por exemplo, idades absurdas (ex: 99999 anos).
Obs.: Os pontos que precedem linhas de programação não fazem parte do programa e devem ser desconsiderados, foram colocados apenas para garantir a indentação do código aqui no site.
solteiros=casados=separados=viuvos = 0
while True:
.....while True:
..........try:
...............idade = int(input('Idade: '))
...............if idade<0:
....................idade = abs(idade)
..........except:
...............print('Por favor, digite uma idade válida!')
...............continue
..........else:
...............break
.....if idade == 0:
..........break
.....while True:
..........print('''
Estado civil
[1] Solteiro(a)
[2] Casado(a)
[3] Separado(a)
[4] Viúvo(a)''')
..........est_civil = str(input('Digite a opção correspondente: ')).strip()
..........if est_civil not in ('1', '2', '3', '4'):
...............print('Opção inválida!')
...............continue
..........print(f'Registrado!\n')
..........if est_civil == '1':
...............solteiros += 1
..........elif est_civil == '2':
...............casados += 1
..........elif est_civil == '3':
...............separados += 1
..........else:
...............viuvos += 1
..........break
print('Fim do registro')
print(f'''
Foram cadastrados {solteiros} solteiros, {casados} casados, {separados} separados e {viuvos} viúvos''')