Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Dúvida sobre operadores de comparação

Olá! Estou praticando alguns exercícios com estrutura de repeticão do site da Python Brasil e um dos exercícios é:

Faça um programa que leia e valide as seguintes informações: Nome: maior que 3 caracteres; Idade: entre 0 e 150; Salário: maior que zero; Sexo: 'f' ou 'm'; Estado Civil: 's', 'c', 'v', 'd';

Segui realizando o seguinte código:

print("Preencha a fica de cadastro:") def cadastro(): nome = input("Nome: ") while len(nome) < 3: print("Digite um nome com mais de 3 letras. Refaça o cadastro.") cadastro() idade = int(input("Idade: ")) while idade < 0 or idade > 150: print("Digite uma idade entre 0 e 150. Refaça o cadastro.") cadastro() salario = float(input("Salario: ")) while salario <= 0: print("Digite um salário maior que 0. Refaça o cadastro.") cadastro() sexo = input("Sexo: (M) para Masculino ou (F) para feminino: ").upper() while sexo != "M" or sexo != "F": print("Digite um sexo válido. Refaça o cadastro.") cadastro() estado_civil = input("Estado civil: Digite 'S' para solteiro, 'C' para casado, 'V' para viuvo ou 'D' para divorciado: ").upper() while estado_civil != ['S', 'C', 'V', 'D']: print("Digite um estado civil válido. Refaça o cadastro.")

print(cadastro())

No while da var sexo, sei que há uma certa discordancia, pois M é diferente de F e vice-versa, sendo que sempre vai retornar o print. Tentei fazer igual o while do estado civil (não sabia se isso era possível, colocar uma lista como elemento de comparacao, ou se tenho que cria uma var com a lista para fazer a comparação).

Como eu poderia realizar essas comparações? alguma outra dica para a resolução do exercício?

Obrigado desde já.

2 respostas
solução!

Oi Leonardo,

a sua primeira dúvida é apenas um pequeno erro de lógica booleana, se vc mudar o or para and já vai funcionar. Se vc está procurando por diferença de valores específicos, normalmente vc vai usar and.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

Quanto a sua segunda dúvida, vc pode usar o operador in para testar se existe ou não algo dentro de um conjunto.

Insira aqui a descrição dessa imagem para ajudar na acessibilidade

No seu while, vc deve usar not in para fazer a comparação da sua variável 'estado_civil' com a lista.

Ola Gil, muito obrigado pela explicacao!

Esses detalhes ja me deram uma noçao melhor de como trabalhar com eles e como aplica-los !

Vou alterar o codigo para fazer os testes, obrigado mais uma vez!