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')
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
Get help from others!
Recent Questions
Recent Answers
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP