Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

problemas com for e if

import random
print("╔════════╗")
print("║ soteio ║")
print("╚════════╝")

lista = []
item = int(input("Insira:"))
lista.append(item)

for(not 0 in item):

    print(lista)
    continue
if 0 in item:
    print(random.choice(lista))

o erro ocorre nos dois pontos dizendo: "'in' expected"

1 resposta
solução!

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!