catch input type error - Printable Version +- Python Forum (https://python-forum.io) +-- Forum: Python Coding (https://python-forum.io/forum-7.html) +--- Forum: General Coding Help (https://python-forum.io/forum-8.html) +--- Thread: catch input type error (/thread-20420.html) |
catch input type error - mcmxl22 - Aug-10-2019 I am trying to get this script to only accept integers. number = int(input("Enter a number. ")) if isinstance(number, str): print("Entry must be a number")I have also tried: if type(number) is str: print("Entry must be a number")I enter a and keep getting: Why dosen't this catch the error?
RE: catch input type error - ThomasL - Aug-10-2019 input() returns you a string and you need to check if all characters in that string are in '0123456789' as only then int() can convert that string into a number. RE: catch input type error - Lawr3y - Aug-10-2019 import re number = input("Enter a number: ") if not re.match("^[0-9]*$", number): print("Entry must be a number")You can put this in a while loop to continue asking for input until it accepts the syntax. Was in a similar situation a few days ago and a quick google search got me the answer. You should also download the Python pdf on your phone or comp :) RE: catch input type error - ndc85430 - Aug-10-2019 (Aug-10-2019, 06:21 AM)mcmxl22 Wrote: Why dosen't this catch the error? Because input is throwing an exception (i.e. the ValueError ) and you don't have any exception handling code (i.e. a try and catch ). Note that throwing is not the same as returning - when an exception is thrown, the function is exited in a different way. No value is returned, so you have to handle the failure in a different way (that is, using the exception handling mechanism). This is one reason one might choose to work in a more functional language - if the functions are pure and so can only return values, then there's only a single flow of execution and handling failures just sits inside that like everything else. RE: catch input type error - ThomasL - Aug-10-2019 (Aug-10-2019, 07:23 AM)ndc85430 Wrote:(Aug-10-2019, 06:21 AM)mcmxl22 Wrote: Why dosen't this catch the error?Because No, it´s the int() function that throws the exeption as the string 'a' cannot be converted into an integer number. Quote:ValueError: invalid literal for int() with base 10: 'a' RE: catch input type error - wavic - Aug-11-2019 Just convert the input string to an integer and catch the error if there is any. You can look at str.isdigit() and str.isnumeric() methods as well |