On 14/05/14 10:45, Sam Ball wrote:
I'm attempting to create a program where the user inputs their account
number (which must be 8 digits) and if what the user enters is not 8
digits in length I want python to tell the user this is invalid and then
keep asking for the account number until a suitable number has been entered.
  I'm guessing it's a sort of while loop

You guess correct

userAccountNumber = eval(input("Please Input Your Account Number:"))

But please don;t do this. it is a huge security hole since whatever your user enters will be executed as Python code - thats what eval() does. Your user can ytype anything in there.

The correct approach is to use raw_input (since you seem to be using Pthon v2) and a conversion function such as int() to get the data
type that you want.


while userAccountNumber > 100000000 or <=9999999:

Python sees this as:

   while (userAccountNumber > 100000000) or <=9999999:

Which makes no sense.

In most programming languages you test this like this:

(userAccountNumber > 100000000) or (userAccountNumber <= 9999999):

But in Python you can do these compound checks more
succinctly like this:

> while not (9999999 < userAccountNumber < 100000000):

And the other way is to check the length of the input at source:

userAccount = ''
while len(userAccount) != 8:
   userAccount = raw_input("Please Input Your Account Number:")
userAccountNumber = int(userAccount)


HTH

--
Alan G
Author of the Learn to Program web site
http://www.alan-g.me.uk/
http://www.flickr.com/photos/alangauldphotos

_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to