Problem with input and return in python app for count words











up vote
0
down vote

favorite












i'm just starting to learn now and i have been doing some exercises trying to add some inputs to the basics functions i have made .



right now i have this code.



print("This is an app calculate the lenght of a word")

def String_Lenght(word):
if type(word) == int:
return "Integers can't be counted"
elif type(word) == float:
return "floats can't be counted"
else:
return len(word)
word = input("enter the word")
print(String_Lenght(word))


The problem is that i get the len of the word but i'm not getting the messages for int and floats in the case when i introduce one, which would be the error here.



Thanks/










share|improve this question


















  • 5




    input() always returns a string. If you input 5 it is just a string of value '5'.
    – sashaaero
    Nov 13 at 1:58






  • 2




    Possible duplicate of How can I read inputs as integers?
    – James
    Nov 13 at 2:00










  • You can use a try/except statement in order to see whether the input can get converted into an int / a float.
    – quant
    Nov 13 at 2:02










  • @quant You can check my answer below . I think I do porvide a more elegant solution .
    – Mark White
    Nov 13 at 3:17















up vote
0
down vote

favorite












i'm just starting to learn now and i have been doing some exercises trying to add some inputs to the basics functions i have made .



right now i have this code.



print("This is an app calculate the lenght of a word")

def String_Lenght(word):
if type(word) == int:
return "Integers can't be counted"
elif type(word) == float:
return "floats can't be counted"
else:
return len(word)
word = input("enter the word")
print(String_Lenght(word))


The problem is that i get the len of the word but i'm not getting the messages for int and floats in the case when i introduce one, which would be the error here.



Thanks/










share|improve this question


















  • 5




    input() always returns a string. If you input 5 it is just a string of value '5'.
    – sashaaero
    Nov 13 at 1:58






  • 2




    Possible duplicate of How can I read inputs as integers?
    – James
    Nov 13 at 2:00










  • You can use a try/except statement in order to see whether the input can get converted into an int / a float.
    – quant
    Nov 13 at 2:02










  • @quant You can check my answer below . I think I do porvide a more elegant solution .
    – Mark White
    Nov 13 at 3:17













up vote
0
down vote

favorite









up vote
0
down vote

favorite











i'm just starting to learn now and i have been doing some exercises trying to add some inputs to the basics functions i have made .



right now i have this code.



print("This is an app calculate the lenght of a word")

def String_Lenght(word):
if type(word) == int:
return "Integers can't be counted"
elif type(word) == float:
return "floats can't be counted"
else:
return len(word)
word = input("enter the word")
print(String_Lenght(word))


The problem is that i get the len of the word but i'm not getting the messages for int and floats in the case when i introduce one, which would be the error here.



Thanks/










share|improve this question













i'm just starting to learn now and i have been doing some exercises trying to add some inputs to the basics functions i have made .



right now i have this code.



print("This is an app calculate the lenght of a word")

def String_Lenght(word):
if type(word) == int:
return "Integers can't be counted"
elif type(word) == float:
return "floats can't be counted"
else:
return len(word)
word = input("enter the word")
print(String_Lenght(word))


The problem is that i get the len of the word but i'm not getting the messages for int and floats in the case when i introduce one, which would be the error here.



Thanks/







python






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 13 at 1:53









Carlos Leotaud

1




1








  • 5




    input() always returns a string. If you input 5 it is just a string of value '5'.
    – sashaaero
    Nov 13 at 1:58






  • 2




    Possible duplicate of How can I read inputs as integers?
    – James
    Nov 13 at 2:00










  • You can use a try/except statement in order to see whether the input can get converted into an int / a float.
    – quant
    Nov 13 at 2:02










  • @quant You can check my answer below . I think I do porvide a more elegant solution .
    – Mark White
    Nov 13 at 3:17














  • 5




    input() always returns a string. If you input 5 it is just a string of value '5'.
    – sashaaero
    Nov 13 at 1:58






  • 2




    Possible duplicate of How can I read inputs as integers?
    – James
    Nov 13 at 2:00










  • You can use a try/except statement in order to see whether the input can get converted into an int / a float.
    – quant
    Nov 13 at 2:02










  • @quant You can check my answer below . I think I do porvide a more elegant solution .
    – Mark White
    Nov 13 at 3:17








5




5




input() always returns a string. If you input 5 it is just a string of value '5'.
– sashaaero
Nov 13 at 1:58




input() always returns a string. If you input 5 it is just a string of value '5'.
– sashaaero
Nov 13 at 1:58




2




2




Possible duplicate of How can I read inputs as integers?
– James
Nov 13 at 2:00




Possible duplicate of How can I read inputs as integers?
– James
Nov 13 at 2:00












You can use a try/except statement in order to see whether the input can get converted into an int / a float.
– quant
Nov 13 at 2:02




You can use a try/except statement in order to see whether the input can get converted into an int / a float.
– quant
Nov 13 at 2:02












@quant You can check my answer below . I think I do porvide a more elegant solution .
– Mark White
Nov 13 at 3:17




@quant You can check my answer below . I think I do porvide a more elegant solution .
– Mark White
Nov 13 at 3:17












3 Answers
3






active

oldest

votes

















up vote
1
down vote













You can use ast.literal_eval() function to evaluate the string to either the integer or the floating point number and then use your code to count the length of the string.



from ast import literal_eval
print("This is an app calculate the length of a word")
def String_Lenght(word):
try:
word = literal_eval(word)
except ValueError:
pass
if type(word) == int:
return "Integers can't be counted"
elif type(word) == float:
return "floats can't be counted"
else:
return len(word)
word = input("enter the word")
print(String_Lenght(word))





share|improve this answer




























    up vote
    0
    down vote













    When you read 'word' is always a string in python 3+.



    so type(word) is always string. hence you would get the length. Check the output below for your program. i used hard breakpoint using import pdb; pdb.set_trace()



    instead of trying to check type(word). I think you should convert string to int / float.



    I think converting to float is a best option .



    This issue is in python 3. as all data from input is string. you can check here.



    $ python t.py
    This is an app calculate the lenght of a word
    enter the word1
    > /Users/sesh/tmp/t.py(6)String_Lenght()
    -> if type(word) == int:
    (Pdb) word
    '1'
    (Pdb) type (word)
    <class 'str'>
    (Pdb) int(word)
    1
    (Pdb) float(word)
    1.0
    (Pdb) int('asdfads)
    *** SyntaxError: EOL while scanning string literal
    (Pdb)
    Traceback (most recent call last):
    File "t.py", line 13, in <module>
    print(String_Lenght(word))
    File "t.py", line 6, in String_Lenght
    if type(word) == int:
    File "t.py", line 6, in String_Lenght
    if type(word) == int:
    File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 51, in trace_dispatch
    return self.dispatch_line(frame)
    File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 70, in dispatch_line
    if self.quitting: raise BdbQuit
    bdb.BdbQuit
    (qsic-api-django)
    sesh at Seshs-MacBook-Pro in ~/tmp





    share|improve this answer




























      up vote
      0
      down vote













      The reason of this problem is in Python input function always return str type.
      So in your code type(word) always return True.
      You should change your code to this.



      print("This is an app calculate the lenght of a word")

      def String_Lenght(word):
      if word.isdigit():
      return "Integers can't be counted"
      elif word.replace(".", "", 1).isdigit():
      return "floats can't be counted"
      else:
      return len(word)


      word = input("enter the word")
      print(String_Lenght(word))





      share|improve this answer





















        Your Answer






        StackExchange.ifUsing("editor", function () {
        StackExchange.using("externalEditor", function () {
        StackExchange.using("snippets", function () {
        StackExchange.snippets.init();
        });
        });
        }, "code-snippets");

        StackExchange.ready(function() {
        var channelOptions = {
        tags: "".split(" "),
        id: "1"
        };
        initTagRenderer("".split(" "), "".split(" "), channelOptions);

        StackExchange.using("externalEditor", function() {
        // Have to fire editor after snippets, if snippets enabled
        if (StackExchange.settings.snippets.snippetsEnabled) {
        StackExchange.using("snippets", function() {
        createEditor();
        });
        }
        else {
        createEditor();
        }
        });

        function createEditor() {
        StackExchange.prepareEditor({
        heartbeatType: 'answer',
        convertImagesToLinks: true,
        noModals: true,
        showLowRepImageUploadWarning: true,
        reputationToPostImages: 10,
        bindNavPrevention: true,
        postfix: "",
        imageUploader: {
        brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
        contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
        allowUrls: true
        },
        onDemand: true,
        discardSelector: ".discard-answer"
        ,immediatelyShowMarkdownHelp:true
        });


        }
        });














         

        draft saved


        draft discarded


















        StackExchange.ready(
        function () {
        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53272658%2fproblem-with-input-and-return-in-python-app-for-count-words%23new-answer', 'question_page');
        }
        );

        Post as a guest















        Required, but never shown

























        3 Answers
        3






        active

        oldest

        votes








        3 Answers
        3






        active

        oldest

        votes









        active

        oldest

        votes






        active

        oldest

        votes








        up vote
        1
        down vote













        You can use ast.literal_eval() function to evaluate the string to either the integer or the floating point number and then use your code to count the length of the string.



        from ast import literal_eval
        print("This is an app calculate the length of a word")
        def String_Lenght(word):
        try:
        word = literal_eval(word)
        except ValueError:
        pass
        if type(word) == int:
        return "Integers can't be counted"
        elif type(word) == float:
        return "floats can't be counted"
        else:
        return len(word)
        word = input("enter the word")
        print(String_Lenght(word))





        share|improve this answer

























          up vote
          1
          down vote













          You can use ast.literal_eval() function to evaluate the string to either the integer or the floating point number and then use your code to count the length of the string.



          from ast import literal_eval
          print("This is an app calculate the length of a word")
          def String_Lenght(word):
          try:
          word = literal_eval(word)
          except ValueError:
          pass
          if type(word) == int:
          return "Integers can't be counted"
          elif type(word) == float:
          return "floats can't be counted"
          else:
          return len(word)
          word = input("enter the word")
          print(String_Lenght(word))





          share|improve this answer























            up vote
            1
            down vote










            up vote
            1
            down vote









            You can use ast.literal_eval() function to evaluate the string to either the integer or the floating point number and then use your code to count the length of the string.



            from ast import literal_eval
            print("This is an app calculate the length of a word")
            def String_Lenght(word):
            try:
            word = literal_eval(word)
            except ValueError:
            pass
            if type(word) == int:
            return "Integers can't be counted"
            elif type(word) == float:
            return "floats can't be counted"
            else:
            return len(word)
            word = input("enter the word")
            print(String_Lenght(word))





            share|improve this answer












            You can use ast.literal_eval() function to evaluate the string to either the integer or the floating point number and then use your code to count the length of the string.



            from ast import literal_eval
            print("This is an app calculate the length of a word")
            def String_Lenght(word):
            try:
            word = literal_eval(word)
            except ValueError:
            pass
            if type(word) == int:
            return "Integers can't be counted"
            elif type(word) == float:
            return "floats can't be counted"
            else:
            return len(word)
            word = input("enter the word")
            print(String_Lenght(word))






            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Nov 13 at 3:15









            Rishabh Mishra

            594




            594
























                up vote
                0
                down vote













                When you read 'word' is always a string in python 3+.



                so type(word) is always string. hence you would get the length. Check the output below for your program. i used hard breakpoint using import pdb; pdb.set_trace()



                instead of trying to check type(word). I think you should convert string to int / float.



                I think converting to float is a best option .



                This issue is in python 3. as all data from input is string. you can check here.



                $ python t.py
                This is an app calculate the lenght of a word
                enter the word1
                > /Users/sesh/tmp/t.py(6)String_Lenght()
                -> if type(word) == int:
                (Pdb) word
                '1'
                (Pdb) type (word)
                <class 'str'>
                (Pdb) int(word)
                1
                (Pdb) float(word)
                1.0
                (Pdb) int('asdfads)
                *** SyntaxError: EOL while scanning string literal
                (Pdb)
                Traceback (most recent call last):
                File "t.py", line 13, in <module>
                print(String_Lenght(word))
                File "t.py", line 6, in String_Lenght
                if type(word) == int:
                File "t.py", line 6, in String_Lenght
                if type(word) == int:
                File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 51, in trace_dispatch
                return self.dispatch_line(frame)
                File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 70, in dispatch_line
                if self.quitting: raise BdbQuit
                bdb.BdbQuit
                (qsic-api-django)
                sesh at Seshs-MacBook-Pro in ~/tmp





                share|improve this answer

























                  up vote
                  0
                  down vote













                  When you read 'word' is always a string in python 3+.



                  so type(word) is always string. hence you would get the length. Check the output below for your program. i used hard breakpoint using import pdb; pdb.set_trace()



                  instead of trying to check type(word). I think you should convert string to int / float.



                  I think converting to float is a best option .



                  This issue is in python 3. as all data from input is string. you can check here.



                  $ python t.py
                  This is an app calculate the lenght of a word
                  enter the word1
                  > /Users/sesh/tmp/t.py(6)String_Lenght()
                  -> if type(word) == int:
                  (Pdb) word
                  '1'
                  (Pdb) type (word)
                  <class 'str'>
                  (Pdb) int(word)
                  1
                  (Pdb) float(word)
                  1.0
                  (Pdb) int('asdfads)
                  *** SyntaxError: EOL while scanning string literal
                  (Pdb)
                  Traceback (most recent call last):
                  File "t.py", line 13, in <module>
                  print(String_Lenght(word))
                  File "t.py", line 6, in String_Lenght
                  if type(word) == int:
                  File "t.py", line 6, in String_Lenght
                  if type(word) == int:
                  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 51, in trace_dispatch
                  return self.dispatch_line(frame)
                  File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 70, in dispatch_line
                  if self.quitting: raise BdbQuit
                  bdb.BdbQuit
                  (qsic-api-django)
                  sesh at Seshs-MacBook-Pro in ~/tmp





                  share|improve this answer























                    up vote
                    0
                    down vote










                    up vote
                    0
                    down vote









                    When you read 'word' is always a string in python 3+.



                    so type(word) is always string. hence you would get the length. Check the output below for your program. i used hard breakpoint using import pdb; pdb.set_trace()



                    instead of trying to check type(word). I think you should convert string to int / float.



                    I think converting to float is a best option .



                    This issue is in python 3. as all data from input is string. you can check here.



                    $ python t.py
                    This is an app calculate the lenght of a word
                    enter the word1
                    > /Users/sesh/tmp/t.py(6)String_Lenght()
                    -> if type(word) == int:
                    (Pdb) word
                    '1'
                    (Pdb) type (word)
                    <class 'str'>
                    (Pdb) int(word)
                    1
                    (Pdb) float(word)
                    1.0
                    (Pdb) int('asdfads)
                    *** SyntaxError: EOL while scanning string literal
                    (Pdb)
                    Traceback (most recent call last):
                    File "t.py", line 13, in <module>
                    print(String_Lenght(word))
                    File "t.py", line 6, in String_Lenght
                    if type(word) == int:
                    File "t.py", line 6, in String_Lenght
                    if type(word) == int:
                    File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 51, in trace_dispatch
                    return self.dispatch_line(frame)
                    File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 70, in dispatch_line
                    if self.quitting: raise BdbQuit
                    bdb.BdbQuit
                    (qsic-api-django)
                    sesh at Seshs-MacBook-Pro in ~/tmp





                    share|improve this answer












                    When you read 'word' is always a string in python 3+.



                    so type(word) is always string. hence you would get the length. Check the output below for your program. i used hard breakpoint using import pdb; pdb.set_trace()



                    instead of trying to check type(word). I think you should convert string to int / float.



                    I think converting to float is a best option .



                    This issue is in python 3. as all data from input is string. you can check here.



                    $ python t.py
                    This is an app calculate the lenght of a word
                    enter the word1
                    > /Users/sesh/tmp/t.py(6)String_Lenght()
                    -> if type(word) == int:
                    (Pdb) word
                    '1'
                    (Pdb) type (word)
                    <class 'str'>
                    (Pdb) int(word)
                    1
                    (Pdb) float(word)
                    1.0
                    (Pdb) int('asdfads)
                    *** SyntaxError: EOL while scanning string literal
                    (Pdb)
                    Traceback (most recent call last):
                    File "t.py", line 13, in <module>
                    print(String_Lenght(word))
                    File "t.py", line 6, in String_Lenght
                    if type(word) == int:
                    File "t.py", line 6, in String_Lenght
                    if type(word) == int:
                    File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 51, in trace_dispatch
                    return self.dispatch_line(frame)
                    File "/usr/local/Cellar/python/3.6.5_1/Frameworks/Python.framework/Versions/3.6/lib/python3.6/bdb.py", line 70, in dispatch_line
                    if self.quitting: raise BdbQuit
                    bdb.BdbQuit
                    (qsic-api-django)
                    sesh at Seshs-MacBook-Pro in ~/tmp






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Nov 13 at 2:09









                    Seshadri VS

                    18313




                    18313






















                        up vote
                        0
                        down vote













                        The reason of this problem is in Python input function always return str type.
                        So in your code type(word) always return True.
                        You should change your code to this.



                        print("This is an app calculate the lenght of a word")

                        def String_Lenght(word):
                        if word.isdigit():
                        return "Integers can't be counted"
                        elif word.replace(".", "", 1).isdigit():
                        return "floats can't be counted"
                        else:
                        return len(word)


                        word = input("enter the word")
                        print(String_Lenght(word))





                        share|improve this answer

























                          up vote
                          0
                          down vote













                          The reason of this problem is in Python input function always return str type.
                          So in your code type(word) always return True.
                          You should change your code to this.



                          print("This is an app calculate the lenght of a word")

                          def String_Lenght(word):
                          if word.isdigit():
                          return "Integers can't be counted"
                          elif word.replace(".", "", 1).isdigit():
                          return "floats can't be counted"
                          else:
                          return len(word)


                          word = input("enter the word")
                          print(String_Lenght(word))





                          share|improve this answer























                            up vote
                            0
                            down vote










                            up vote
                            0
                            down vote









                            The reason of this problem is in Python input function always return str type.
                            So in your code type(word) always return True.
                            You should change your code to this.



                            print("This is an app calculate the lenght of a word")

                            def String_Lenght(word):
                            if word.isdigit():
                            return "Integers can't be counted"
                            elif word.replace(".", "", 1).isdigit():
                            return "floats can't be counted"
                            else:
                            return len(word)


                            word = input("enter the word")
                            print(String_Lenght(word))





                            share|improve this answer












                            The reason of this problem is in Python input function always return str type.
                            So in your code type(word) always return True.
                            You should change your code to this.



                            print("This is an app calculate the lenght of a word")

                            def String_Lenght(word):
                            if word.isdigit():
                            return "Integers can't be counted"
                            elif word.replace(".", "", 1).isdigit():
                            return "floats can't be counted"
                            else:
                            return len(word)


                            word = input("enter the word")
                            print(String_Lenght(word))






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Nov 13 at 3:14









                            Mark White

                            36729




                            36729






























                                 

                                draft saved


                                draft discarded



















































                                 


                                draft saved


                                draft discarded














                                StackExchange.ready(
                                function () {
                                StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53272658%2fproblem-with-input-and-return-in-python-app-for-count-words%23new-answer', 'question_page');
                                }
                                );

                                Post as a guest















                                Required, but never shown





















































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown

































                                Required, but never shown














                                Required, but never shown












                                Required, but never shown







                                Required, but never shown







                                Popular posts from this blog

                                Biblatex bibliography style without URLs when DOI exists (in Overleaf with Zotero bibliography)

                                ComboBox Display Member on multiple fields

                                Is it possible to collect Nectar points via Trainline?