Consider this.
>>> n = input("your name ")
your name 5 #5 is my input
>>> n !=int
True
>>> type(n)
<class 'str'>
>>> n = input("your name ")
your name chimp
>>> n != int
True
>>> type(n)
<class 'str'>
No matter what you enter - will always be string. So it will always evaluate true and you'll see "Input is Invalid. Please enter a name." message until you break the program.
So, you need to check input value does not contain numbers (of course there some other symbols, but let make things easier for now). But we also noticed that even if a user inputs a number, it is processed as string (5 -> "5"). So let us make a list of numbers as string.
>>> a = [str(i) for i in range(10)]
>>> a
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> name = input("what is your name? ")
what is your name? 3rwin
>>> any(i in a for i in name)
True
>>> name = input("what is your name? ")
what is your name? ernesto
>>> any(i in a for i in name)
False
>>> not any(i in a for i in name)
True
just change your while expression as while not any(i in a for i in name)
and everything will be ok. then you can extend a (unwanted characters) as you wish and get more accurate results.