Python Forum
The difference between two functions - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/Forum-Python-Coding)
+--- Forum: General Coding Help (https://python-forum.io/Forum-General-Coding-Help)
+--- Thread: The difference between two functions (/Thread-The-difference-between-two-functions)



The difference between two functions - Motley_Cow - Dec-03-2019

I am a newbie to python and going through the NLTK book to learn a bit about using python for natural language processing. This post is not about NLTK, but about the difference in object classes that occur in the following two functions:

The first function is used to find the percentage of times that a single word occurs within the body of a text:

def percent1(text, word):
    a = text.count(word) #counts the number of 'words' (items) in the list (i.e. text)
    b = len(text)
    perc = a / b 
    print(f"{perc} %")
    #an example of the output of this function is: 7.2385e-05%
The second function does the same thing, except it returns the output as a decimal:

def percent2(text, word):
    from decimal import Decimal
    a = text.count(word)
    b = len(text)
    perc = Decimal(a / b)
    output = round(perc, 8) #rounds the variable perc to the 8th decimal place
    print(f"{output} %")
    #an example of the output of this function 
    #(from the same text) is: 0.00007285%
In trying to understand the difference between floats and integers, my question is this: Does the first function return a float (floating point integer?) while the second function returns a decimal integer? Would stating it that way be correct? (My apologies, I'm brushing up on math while coding, but I am not the most adept with such terminology) All thoughts and considerations are appreciated.


RE: The difference between two functions - Larz60+ - Dec-03-2019

division of two integers returns a float
>>> a = 6
>>> b = 3
>>> c = a/b
>>> print(f"type(a): {type(a)}, type(b): {type(b)}, type(c): {type(c)}")
type(a): <class 'int'>, type(b): <class 'int'>, type(c): <class 'float'>
>>>



RE: The difference between two functions - midarq - Dec-03-2019

Yes. You can always use the type function to test that.
Examples (Out[10] is the output for the line of code above it):
from decimal import Decimal

2/5
Out[10]: 0.4

type(2/5)
Out[11]: float

Decimal(2/5)
Out[12]: Decimal('0.40000000000000002220446049250313080847263336181640625')

type(Decimal(2/5))
Out[13]: decimal.Decimal

2//5
Out[14]: 0

type(2//5)
Out[15]: int