Olá Isaque, tudo bem? Espero que sim!
Dessa forma o código não irá funcionar da maneira que você gostaria.
A lista é criada, é solicitado que insira um número e esse número é adicionado à lista. Porém, como essa parte do código não está em nenhum loop, será adicionado somente um valor nessa lista.
Além disso o not deve ser utilizado juntamente com a cláusula in, da forma not in, para ser checado se o valor não está em uma lista.
Da forma que foi utilizado not 0 in item
, ainda que seja corrigido para 0 not in item
, resultará em um erro. Uma vez que item é uma variável do tipo inteiro e não é um iterável para que possa ser usado a cláusula in. Somente pode ser usado essa cláusula caso seja um objeto que armazene diversos elementos.
Refatorei o código de duas formas, imagino que podem ser úteis.
O primeiro código podemos escolher a quantidade de elementos que serão sorteados previamente, utilizando um loop for. O loop se encerra quando a quantidade de elementos adicionados à lista seja igual ao valor escolhido inicialmente.
import random
print("╔═════════╗")
print("║ sorteio ║")
print("╚═════════╝")
lista = []
quant_elementos = int(input("Insira o número de elementos que serão sorteados: "))
for i in range(quant_elementos):
item = int(input("Insira um número: "))
lista.append(item)
print(random.choice(lista))
O segundo código utiliza um loop while, checando a condição de que enquanto o valor 0 não estiver na lista, o número não será sorteado.
import random
print("╔═════════╗")
print("║ sorteio ║")
print("╚═════════╝")
lista = []
while 0 not in lista:
item = int(input("Insira um número (0 para encerrar): "))
lista.append(item)
print(random.choice(lista))
Coloquei uma mensagem para o usuário saber que o 0 é o número que encerra o sorteio. Repare que o 0 será adicionado à lista e tem a possibilidade de ser sorteado. Caso queira realizar o sorteio sem o 0, pode fazer escolher uma das formas:
import random
print("╔═════════╗")
print("║ sorteio ║")
print("╚═════════╝")
lista = []
while 0 not in lista:
item = int(input("Insira um número (0 para encerrar): "))
lista.append(item)
lista.remove(0)
if lista:
print(random.choice(lista))
Dessa forma, removeremos o valor 0 da lista antes de realizarmos o sorteio, utilizando lista.remove(0)
. A linha de código if lista:
serve para checarmos e a lista não está vazia, porque se estiver vazia, retornaria um erro na função choice().
Uma segunda maneira seria utilizar um while True
e o break caso o item tenha o valor 0:
import random
print("╔═════════╗")
print("║ sorteio ║")
print("╚═════════╝")
lista = []
while True:
item = int(input("Insira um número (0 para encerrar): "))
if item == 0:
break
lista.append(item)
if lista:
print(random.choice(lista))
Bons estudos!