How to ensure that three conditions are met? Is there a better way to do it?

Asked

Viewed 59 times

-4

Program that asks a person’s age, weight and height and decides if they are fit to join the army. To enter, it is necessary to age, weigh more or equal 60 kg and measure more or equal 1,70 meters.

print('='*5, 'Aliste-se no Exército Brasileiro', '='*5)

idade = int(input('Digite sua idade: '))
peso = int(input('Digite seu peso: '))
altura = float(input('Digite sua altura: ex:1.7 '))

apto = ' '

if idade >= 18:
    apto = '1'
else:
    apto = '0'

if peso >= 60:
    apto += '1'
else:
    apto += '0'

if altura >= 1.70:
    apto += '1'
else:
    apto += '0'

if apto == '111':
    print('Você está apto a alista-se no exército brasileiro, parabéns.')
elif apto == '011':
    print('Você não possue Idade sulficiente para ingressar no exército.')
elif apto == '101':
    print('Você não possue peso sulficiente para ingressar no exército.')
elif apto == '110':
    print('Você não possue altura sulficiente para ingressar no exército.')
elif apto == '100':
    print('Você não possue nem Peso nem Altura sulficiente para ingressar no exército.')
elif apto == '001':
    print('Você não possue nem Idade nem Peso sulficiente para ingressar no exército.')
elif apto == '010':
    print('Você não possue nem Idade nem Altura sulficiente para ingressar no exército.')
else:
    print('Você não possui nenhum dos requisitos para entrar no Exército')

2 answers

2

The idea is just to check whether you are fit or not from 3 conditions. For this, instead of creating a string with three values and then check all possibilities, you can use the function all:

idade = int(input('Sua idade: '))
peso = float(input('Seu peso: '))
altura = float(input('Sua altura: '))

apto = all([
    idade >= 18,
    peso >= 60,
    altura >= 1.70
])

Thus, apto will be True when all three conditions are met, or False in all other cases.


Given the new information that messages are also needed, what you can do is something like:

idade = int(input('Sua idade: '))
peso = float(input('Seu peso: '))
altura = float(input('Sua altura: '))

apto = True

if idade < 18:
    print('Você precisa ter, pelo menos, 18 anos')
    apto = False

if peso < 60:
    print('Você precisa ter, pelo menos, 60 quilos')
    apto = False

if altura < 1.70:
    print('Você precisa ter, pelo menos, 1.70 m de altura')
    apto = False

if apto:
    print('parabéns, você está apto a alistar-se')

At the end, if any condition is not met, apto will be False.

  • Yeah, but I forgot to report q it is necessary to inform in the script what question the candidate (army) fails, age, weight or height or two of or the three...

  • Silas, and does it need to be in just one text or can it be multiple messages? Please edit your question and add this detail to the statement.

  • No. Now, it’s perfect! rsrs.

0

Getting the idea from Anderson Carlos Woss:

print('='*5, 'Aliste-se no Exército Brasileiro', '='*5)
idade = int(input('Sua idade: '))
peso = float(input('Seu peso: '))
altura = float(input('Sua altura: '))
printe = ''
apto = True
if idade < 18:
    printe = 'Você precisa ter, pelo menos, 18 anos'
    apto = False
if peso < 60:
    printe += '\nVocê precisa ter, pelo menos, 60 quilos'
    apto = False
if altura < 1.70:
    printe += '\nVocê precisa ter, pelo menos, 1.70 m de altura'
    apto = False
nenhum_requisito = all([
    idade < 18,
    peso < 60,
    altura < 1.70
])
if nenhum_requisito:
   printe ='Você não possui nenhum dos quesitos para se alistar!'
if apto == True:
    printe = 'parabéns, você está apto a alistar-se'
print(printe)

OR MAYBE:

print('='*5, 'Aliste-se no Exército Brasileiro', '='*5)
idade = int(input('Sua idade: '))
peso = float(input('Seu peso: '))
altura = float(input('Sua altura: '))
printe = ''
nenhum_requisito = ''
apto = True
if idade < 18:
    printe = 'Você precisa ter, pelo menos, 18 anos'
    apto = False
if peso < 60:
    printe += '\nVocê precisa ter, pelo menos, 60 quilos'
    apto = False
if altura < 1.70:
    printe += '\nVocê precisa ter, pelo menos, 1.70 m de altura'
    apto = False
if idade < 18 and peso < 60 and altura < 1.70:
    nenhum_requisito = 'Você não possui nenhum dos quesitos para se alistar!'
    printe = nenhum_requisito
if apto == True:
    printe = 'parabéns, você está apto a alistar-se'
print(printe)

I don’t know the best script, I would bet on the first one. If someone can evaluate...

Browser other questions tagged

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