Search code examples
pythonfunctioninputedx

Python using input() within function to determine data type


I'm in one of the final chapters of my Introduction to Computer Science using Python. Can someone tell me what is wrong with my code? The result is just BLANK.

#Write a function  called "input_type" that gets user input and 
#determines what kind of string the user entered.

#  - Your function should return "integer" if the string only
#    contains characters 0-9.
#  - Your function should return "float" if the string only
#    contains the numbers 0-9 and at most one period.
#  - You should return "boolean" if the user enters "True" or
#    "False". 
#  - Otherwise, you should return "string".

#Remember, start the input_type() function by getting the user's
#input using the input() function. The call to input() should be
#*inside the* input_type() function.


def input_type(userInput):
    digitTable = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    test1 = userInput.find(digitTable)
    if userInput == "True" or userInput == "False":
        return "boolean"
    elif test1 == -1:  # No digits
        return "string"
    elif userInput == "True" or userInput == "False":
        return "boolean"
    else:  # Contains digits
        test2 = userInput.find(".") # find decimal
        if test2 == -1:  # No decimals means it is an integer
            return "integer"
        else:  # Yes if float
            return "float"

userInput = input()
print(input_type(userInput))

Solution

  • To fix your's problem:

    def input_type(userInput):
        digitTable = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
        test1 = userInput.find(''.join([str(x) for x in digitTable]))
        if userInput == "True" or userInput == "False":
            return "boolean"
        elif test1 == -1:  # No digits
            return "string"
        elif userInput == "True" or userInput == "False":
            return "boolean"
        else:  # Contains digits
            test2 = userInput.find(".") # find decimal
            if test2 == -1:  # No decimals means it is an integer
                return "integer"
            else:  # Yes if float
                return "float"
    
    userInput = input()
    print(input_type("0.23"))