Ajuda com questão de Python [RESOLVIDO]

Preciso de ajuda com a seguinte questão de Python:

Crie a função func() que receberá como argumento o chaveiro (Chaveiro é uma lista com 99 chaves e 10 caracteres em cada chave) e um número inteiro. A função deverá retornar a chave, se existir, que contenha o inteiro. Crie a variável senha que guardará o valor retornado pela função func() quando passados o chaveiro e o inteiro 29 como argumentos.

Minha duvida é: como eu posso comparar esse inteiro com um trecho de uma chave que eu ainda nem sei qual é?

E o que você já fez, pode postar para sugerirmos idéias?

Eu pensei em utilizar uma sequencia de “for’s” encadeados, o for externo rodaria por todas as chaves existentes no chaveiro, enquanto o for interno rodaria nos caracteres de cada chave, a cada vez que o for interno rodasse, seria feita uma comparação do caractere com o inteiro que foi passado como parâmetro, se o teste retornar true, é guardada a chave em questão dentro da variável senha.

Eu não sei ao certo como por isso em prática, e nem se essa lógica vai funcionar para o problema, afinal sou apenas um iniciante na linguagem Python.

Desde já agradeço por qualquer ajuda!

Ajudar a gente ajuda, a questão é justamente te ajudar a continuar/concluir a partir de algum código seu entende?

Assim podemos dar idéias, dizer o que é ou não viável, se dois for’s vão ser mais rápidos do que usar coisas prontas do python (leia-se métodos e funções da api padrão) explicar as diferenças, e por ai vai…

Por exemplo, em python para encontrar um número numa string você pode simplesmente usar a função str + o operador in…

numero = 10
chave = 'ABC10DEF'

print(str(numero) in chave) # True
print(str(11) in chave) # False

A partir daí você já consegue ter uma noção se vale a pena ter dois for’s…

1 curtida

Obrigado pela ajuda, esse trecho de código me foi muito útil para resolver o problema.

O código ficou assim:

def func(chaveiro, x):
    for chave in chaveiro:
        if str(x) in chave:
            return chave
senha = func(chaveiro, 29)