How to use while and if in Python?

Asked

Viewed 300 times

-1

Forgive me if it’s a stupid question, but I’m a beginner. I have to use the while condition to finish the program. In this case, the code has to rotate while the weight is different from 0. And, if the weight is 0, display the invalid weight message and then finish running the program. You can help me?

nome_lutador = str(input('Digite o nome do lutador: '))
peso_lutador = float(input('Digite o peso do lutador: '))
categoria = 0

if peso_lutador < 65:
    categoria = 'Pena'
if peso_lutador >= 65 and peso_lutador < 72:
    categoria = 'Leve'
if peso_lutador >= 72 and peso_lutador < 79:
    categoria = 'Ligeiro'
if peso_lutador >= 79 and peso_lutador < 86:
    categoria = 'Meio-medio'
if peso_lutador >= 86 and peso_lutador < 93:
    categoria = 'Medio'
if peso_lutador >= 93 and peso_lutador < 100:
    categoria = 'Meio-pesado'
if peso_lutador >= 100:
    categoria = 'Pesado'
print('O lutador', nome_lutador, 'pesa', peso_lutador,  'kg e se enquadra na categoria', categoria)
  • https://answall.com/q/336185/101, https://answall.com/q/446743/101, https://answall.com/q/446980/101 I think one of these solves the problem.

  • Just a detail that no one commented below, that can simplify the if's: https://ideone.com/OFFFjUM

3 answers

0

There are some errors in your code.

The first mistake - and perhaps the most important - is that you need to wrap your code in a loop. In this case, the most indicated loop is the while True.

The second error is that you don’t need to use the function str(), because the return of function input() is already a string.

So the correct form of the code would be:

while True:
    nome_lutador = input('Digite o nome do lutador: ')
    peso_lutador = float(input('Digite o peso do lutador: '))

    if peso_lutador != 0:
        categoria = 0
        if peso_lutador < 65:
            categoria = 'Pena'
        elif 65 <= peso_lutador < 72:
            categoria = 'Leve'
        elif 72 <= peso_lutador < 79:
            categoria = 'Ligeiro'
        elif 79 <= peso_lutador < 86:
            categoria = 'Meio-médio'
        elif 86 <= peso_lutador < 93:
            categoria = 'Médio'
        elif 93 <= peso_lutador < 100:
            categoria = 'Meio-pesado'
        elif peso_lutador >= 100:
            categoria = 'Pesado'

        print(f'O lutador {nome_lutador} pesa {peso_lutador:.1f} Kg e se enquadra na categoria {categoria}')
    else:
        print('Peso Inválido!')
        break

Note that when the code is executed, we must enter the wrestler’s name and press Enter. Then we must enter the fighter’s weight and press Enter.

Later the first block if will verify whether the boxer is different from 0. If positive, will be checked the category of the fighter and then will be displayed both the data of the fighter - name and weight - and the category of the same. If no, that is, the weight is equal to 0, the program displays the message Peso Invalido and closes its execution.

OBSERVING: While the typed weight is different from 0, the program will display the fighter’s data and request the data of another fighter. Thus, program shutdown will only occur if the value is entered 0.

0

There are two good ways to do this, varies according to what you specifically want.

first form:

peso_lutador = float(input('peso aqui'))

while peso_lutador != 0:
    print(peso_lutador)
    peso_lutador = peso_lutador - 1
else:
    print('Peso invalido.')

In this example you make the comparison in the while itself, when the weight of the fighter is equal to 0 it will stop and print 'invalid weight'.

Or

second form:

peso_lutador = float(input('peso aqui'))

while True:
    if peso_lutador == 0:
        break # Isso acaba a iteração
        print('Peso invalido.')
        
    print(peso_lutador)
    peso_lutador = peso_lutador - 1

In this example it performs the check within while in the form of if, if the weight becomes 0 at some point it ends with the while using the break. Note also that in this case the while is infinite what ends with it is the break.

-2

It also solves the code:

while True:
    nome_lutador = input('Digite o nome do lutador: ')
    peso_lutador = float(input('Digite o peso do lutador: '))

    if peso_lutador != 0::
        # Vai ser 'Pena' se for menor que 65
        categoria = 'Pena'

        if peso_lutador >= 65 and peso_lutador < 72:
             categoria = 'Leve'
             print(categoria)
        elif peso_lutador >= 72 and peso_lutador < 79:
            categoria = 'Ligeiro'
            print(categoria)
        elif peso_lutador >= 79 and peso_lutador < 86:
            categoria = 'Meio-medio'
            print(categoria)
        elif peso_lutador >= 86 and peso_lutador < 93:
            categoria = 'Medio'
            print(categoria)
        elif peso_lutador >= 93 and peso_lutador < 100:
            categoria = 'Meio-pesado'
            print(categoria)
        elif peso_lutador >= 100:
            categoria = 'Pesado'
            print(categoria)

        print(
            f'O lutador {nome_lutador} pesa {peso_lutador:.1f}', 
            f'Kg e se enquadra na categoria {categoria}')
    else:
        print('Peso Inválido!')
        break

The if peso_lutador < 65: ends up not being necessary, because it went through the if peso_lutador != 0: to categoria is already equal to 'Pena' in the programming each if or elif that you can solve without for the better, that costs performance.

Really if the user enters a negative value will end up entering the category Pena, then consider for a if peso_lutador > 0: in place of if peso_lutador != 0:

Browser other questions tagged

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