Python Forum
how to determine if an object is a number
Thread Rating:
  • 1 Vote(s) - 4 Average
  • 1
  • 2
  • 3
  • 4
  • 5
how to determine if an object is a number
#6
(Jul-09-2018, 10:18 PM)micseydel Wrote: @Skaperen, what exactly do you mean by "determine if an object passed in to a function is a number"? It sounds like you already have a Python object, so you're not dealing with a user-input string.

Python is not only dynamically typed (by design) but also duck typed (by convention), so yes as you say the "Pythonic" thing to do would be to try to use it and then catch an exception if you're really concerned about an operation not being supported, but in practice we usually don't bother looking for an exception. Usually we wouldn't have an is_number function like you're describing, even.
it might actually be a user input string. so i am putting conversions under the try clause, too. i'm not really concerned what is under try may well just be the start of how the number will be used. i just want to include enough meaning in the message (in the raised exception) to help the end user in lieu of the programmer since some errors may well just be a user error.

of course the programmer should understand the traceback and correct errors ... if it is an error in the code. but the end user who knows nothing about coding, can make mistakes, too, such as typing a comma instead of a period in a number (perhaps because they are in Europe and it's a habit). whatever it is, if i am the programmer, i want to tell users about their errors .. or where i am making tools for programmers, make it easy for them to inform their users.

what if you have a program for farmers to type in how many acres they need seed for and this one farmer types in: 1,649.5

do you want to say to him ... ValueError: could not convert string to float: '1,649.5'

or maybe ... decimal.InvalidOperation: [<class 'decimal.ConversionSyntax'>]

i wouldn't. at they very least i'd want to say ... the number of acres is not a valid number. or i could do better and tell him not to type those commas. or maybe i could just take it that way.

when some web shop wants CC numbers without the spaces, i just want to tell them "how ****ing hard is it to delete spaces in the code" or maybe just "cc=cc.replace(' ','') # how hard is that?".

yeah, if "a number" to the code i'm writing could be a decimal string and/or a complex number, the the test needs to include that. but what if the next project would screw up bad with a complex number and some user types one in. it needs different code. gotta define what you want. do you want to allow the switched use of commas and periods? is "1,2" a number?
Tradition is peer pressure from dead people

What do you call someone who speaks three languages? Trilingual. Two languages? Bilingual. One language? American.
Reply


Messages In This Thread
RE: how to determine if an object is a number - by Skaperen - Jul-10-2018, 12:36 AM

Possibly Related Threads…
Thread Author Replies Views Last Post
  TypeError: int() argument must be a string, a bytes-like object or a number, not 'Non Anldra12 2 5,380 May-02-2021, 03:45 PM
Last Post: Anldra12
  Determine number of all the immediately adjacent points in python zackk 1 1,952 Feb-06-2021, 09:23 AM
Last Post: zackk
  How to determine pen color from an image? robie972003 2 2,525 Mar-24-2019, 10:06 PM
Last Post: robie972003
  determine if an number is in a list Dbeah 7 3,925 Nov-06-2018, 12:11 PM
Last Post: buran
  determine if an number is in a list Dbeah 1 2,314 Nov-04-2018, 04:50 PM
Last Post: stullis
  How Do I Determine indentation in AST? jimo 3 4,393 Jul-01-2018, 04:25 PM
Last Post: buran
  The number of object makes code slower? fig0 1 2,576 Jan-25-2018, 11:16 PM
Last Post: Gribouillis
  Object Detection that records the number of secs the face is not detected trabis03 1 2,593 Jul-21-2017, 04:14 PM
Last Post: nilamo
  Determine whether a method was overridden porton 6 6,311 Nov-14-2016, 09:51 PM
Last Post: Ofnuts

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020