Danielle
Danielle

Reputation: 45

How to verify numbers in input with python?

I'm trying to learn how to program and I'm running into a problem....

I'm trying to figure out how to make sure someone inputs a number instead of a string. Some related answers I found were confusing and some of the code didn't work for me. I think someone posted the try: function, but it didn't work, so maybe I need to import a library?

Here's what I'm trying right now:

Code:

print "Hi there! Please enter a number :)"
numb = raw_input("> ")

if numb != str()
    not_a_string = int(next)
else:
    print "i said a number, not a string!!!"

if not_a_string > 1000:
    print "You typed in a large number!"

else:
    print "You typed in a smaller number!"

Also I have another question while I'm asking. How can I make it so it will accept both uppercase and lower case spellings? In my code below, if I were to type in "Go to the mall" but with a lowercase G it would not run the if statement because it only accepts the capital G.

print "What would you like to do: \n Go to the mall \n Get lunch \n Go to sleep"
answer = raw_input("> ")

if answer == "Go to the mall":
    print "Awesome! Let's go!"
elif answer == "Get lunch":
    print "Great, let's eat!"
elif answer == "Go to sleep":
    print "Time to nap!"
else:
    print "Not what I had in mind...."

Thanks. ^^

Edit: I'm also using python 2.7 not 3.0

Upvotes: 3

Views: 2257

Answers (3)

shantanoo
shantanoo

Reputation: 3704

you may try


    numb = numb.strip()
    if numb.isdigit() or (numb[0] in ('+', '-') and numb[1:].isdigit():
        # process numb

Upvotes: 0

mgilson
mgilson

Reputation: 309919

You can do something like this:

while True: #infinite loop
   ipt = raw_input(' Enter a number: ')
   try:
      ipt = int(ipt)
      break  #got an integer -- break from this infinite loop.
   except ValueError:  #uh-oh, didn't get an integer, better try again.
      print ("integers are numbers ... didn't you know? Try again ...")

To answer your second question, use the .lower() string method:

if answer.lower() == "this is a lower case string":
   #do something

You can make your string comparisons really robust if you want to:

if answer.lower().split() == "this is a lower case string".split():

In this case, you'll even match strings like "ThIs IS A lower Case\tString". To get even more liberal in what you accept, you'd need to use a regular expression.

(and all this code will work just fine on python2.x or 3.x -- I usually enclose my print statements in parenthesis to make it work for either version).

EDIT

This code won't quite work on python3.x -- in python3, you need to change raw_input into input to make it work. (Sorry, forgot about that one).

Upvotes: 4

oyss
oyss

Reputation: 692

First,you should ask only one question per post.

Q1: use built-in .isdigit()

if(numb.isdigit()):
    #do the digit staff

Q2:you can use string.lower(s) to solve the capital issue.

Upvotes: 0

Related Questions