Q:

Encontrar determinado texto em uma string

Olá estou com uma duvida.
nome=str(input('Qual o seu nome completo?'))
print('Seu nome tem Enzo?{}'.format('Enzo' in nome.lower()))

Tenho esse código que ele verifica sem tem uma determinada string dentro da outra,o problema é eu quero que ele verifique sem tem um determinado nome dentro do texto em que eu digitar e faça uma determinada ação.Ex:Ver se tem a palavra "Enzo" e se tiver escrever algo na tela.

A:

Seu código possui duas considerações importantes que não foram abordadas, de forma satisfatória, nas outras respostas.
1) Redundância na função input. Se você ler a documentação oficial da função, verá o seguinte trecho (adaptado):

The function then reads a line from input, converts it to a string (stripping a trailing newline), and returns that.

Isto é, o retorno da função sempre será uma string, independente do conteúdo lido. Assim, fazer str(input(...)) é inserir redundância no código e efetuar uma¹ chamada desnecessária a mais.
2) Sensível à caixa do texto. A comparação que você fez foi 'Enzo' in nome.lower() e ela jamais será válida, pois você está, basicamente, buscando uma string com caracteres maiúsculos em uma string que é composta, certamente, apenas por caracteres minúsculos, visto que utilizou o método lower(). Seria o mesmo que buscar o número 7 em um conjunto de números pares. A lógica está certa, mas falhou na implementação.
Dito isso, seu código basicamente seria:
nome = input('Qual é o seu nome completo?')
print('Seu nome tem Enzo? {}'.format('Enzo' in nome))

Veja funcionando no Repl.it | Ideone | GitHub GIST
Porém, isso produziria uma saída tal como:
Seu nome tem Enzo? True
Seu nome tem Enzo? False

É estranho ter True ou False em meio à uma string em português. Pelo menos eu acho. Faria mais sentido para mim aparecer "sim" ou "não", e para isso, bastaria fazer:
nome = input('Qual é o seu nome completo?')
tem_enzo = 'Sim' if 'Enzo' in nome else 'Não'

print(f'Seu nome tem Enzo? {tem_enzo}')

Veja funcionando no Repl.it | Ideone | GitHub GIST
Para fazer a verificação que não seja sensível à caixa, basta você utilizar o método lower, mas tomando o cuidado de buscar por uma string composta apenas por caracteres minúsculos, tal como em:
'enzo' in nome.lower()

Nota: vale lembrar que este método pode não ser inteiramente eficiente, visto que retornaria como verdadeiro caso o nome do usuário fosse Lorenzo, pois possui 'enzo' no nome. Se for interesse verificar apenas pelo termo completo, a solução seria outra.

¹ : Não é apenas uma chamada, visto que str é uma classe nativa do Python, não uma função. O que acontece, neste caso, é a chamada do construtor.

A:

Uma sugestão para com regex seria usar o meta-caractere \b, exemplo:
import re

nome = input('Qual o seu nome completo? ')

if re.search('\\benzo\\b', nome, re.IGNORECASE):
    print("A string tem o nome Enzo")
else:
    print("A string não tem o nome Enzo")

O \b é um meta-caractere que usado para encontrar uma correspondência no início ou no final de uma palavra, evitando assim que que palavras como:

enzon
fenzo

Se rodar em:
import re

print( re.search('enzo', 'enzon', re.IGNORECASE) ) # retorna <_sre.SRE_Match object; span=(0, 4), match='enzo'>
print( re.search('enzo', 'fenzo', re.IGNORECASE) ) # retorna <_sre.SRE_Match object; span=(0, 4), match='enzo'>
print( re.search('enzo', 'cheetos', re.IGNORECASE) ) # retorna None

Agora usando o \b note como funciona:
import re

print( re.search('\\benzo\\b', 'enzon', re.IGNORECASE) ) # retorna None
print( re.search('\\benzo\\b', 'fenzo', re.IGNORECASE) ) # retorna None
print( re.search('\\benzo\\b', 'cheetos', re.IGNORECASE) ) # retorna None

print( re.search('\\benzo\\b', 'enzo foo bar', re.IGNORECASE) ) # retorna <_sre.SRE_Match object; span=(0, 4), match='enzo'>
print( re.search('\\benzo\\b', 'foo enzo bar', re.IGNORECASE) ) # retorna <_sre.SRE_Match object; span=(4, 8), match='enzo'>

O meta-caractere \b é uma verdadeira mão na roda para evitar tais problemas.

