TransWikia.com

Encurtar condição que verifica se valor é um dentre vários possíveis

Stack Overflow em Português Asked on January 25, 2021

Existe algum jeito de encurtar o if a == 1 or a == 2 or a == 3 do código abaixo?

a = int(input('Digite um número: '))

if a == 1 or a == 2 or a == 3:
    print('O Número digitado está entre 1 a 3')
else:
    print('O Número digitado não está entre 1 a 3')

2 Answers

Você pode usar a palavra chave in.
Use palavra chave in, em uma condição, para verificar se um sequência(lista, range, string) contém um determinado valor. Corresponde função contains(a, b) do módulo operator:

a = int(input('Digite um número: '))

#se estiver contido na lista
if a in [1, 2, 3]:
    print('O Número digitado está entre 1 a 3')
else:
    print('O Número digitado não está entre 1 a 3')

Se a faixa de valores for continua você pode ao invés de usar uma lista usar um range:

a = int(input('Digite um número: '))

#se estiver contido entre 1 e 99
if a in range(1,100):
    print('O Número digitado está entre 1 a 99')
else:
    print('O Número digitado não está entre 1 a 99')

Answered by Augusto Vasques on January 25, 2021

É possível fazer:

if 1 <= a <= 3:

Desta forma está dizendo que 1 tem que ser menor ou igual a a que por sua vez tem que ser menor ou igual a 3. Assim atinge os números que deseja.

Python permite essa forma de usar o operador de forma a aproveitar a comparação. Eu acho menos intuitivo na maioria das vezes, mas outras pessoas podem achar diferente. Eu acho que pode não compensar encurtar e deixar mais confuso. A maioria das pessoas se perdem para entender isso, até entende, mas demora mais.

A parte boa dele é que é rápido para executar, pode ser até mais rápido que a comparação original. Comparações contra sequências de números serão mais lentas. Dependendo do que faça se tiver mais números pode ficar mais longo.

a = 0
if 1 <= a <= 3:
    print("0")
a = 1
if 1 <= a <= 3:
    print("1")
a = 3
if 1 <= a <= 3:
    print("3")
a = 4
if 1 <= a <= 3:
    print("4")

Veja funcionando no ideone. E no repl.it. Também coloquei no GitHub para referência futura.

Answered by Maniero on January 25, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP