1

I am trying to learn python from scratch and while doing a practice on While loop, I got stuck on implementing it in my simple program as we do in C# in Do While loop. Actually I have a Simple program which prompt user to enter his Mobile number and if Length of the mobile number is less then 10 digits, then it would display a message like "Enter a valid Number" and after that it will again ask to enter Mobile Number.

print("Please Enter your Mobile Number")

mobilenum = input("Mobile Number:\n")

while(True):

    if(len(mobilenum)< 10):
        print("Please Enter a valid Mobile Number")
        break
else:

    print(mobilenum) 

In my case, If I enter less then 10 digits then the program gets stopped and not asking to enter number again

Please suggest the proper code.

mplungjan
  • 169,008
  • 28
  • 173
  • 236
Vishal Mishr
  • 195
  • 1
  • 8
  • `print("Please Enter a valid Mobile Number")`. You just print message, but don't input from user. – Austin Oct 03 '20 at 13:44

1 Answers1

1

Perhaps you meant this (My very first python answer :)

You need to move the question to inside the loop to get it to be asked until the test breaks the loop

while(True):
    print("Please Enter your Mobile Number")
    mobilenum = input("Mobile Number:\n")
    if(len(mobilenum) >= 10):
        print(f'Number OK {mobilenum}')
        break
    else:
        print(f'{mobilenum} is not a valid number') 

The other way around

while(True):
    print("Please Enter your Mobile Number")
    mobilenum = input("Mobile Number:\n")
    if(len(mobilenum) < 10):
        print(f'{mobilenum} is not a valid number')  
        break
    else:
        print(f'Number OK {mobilenum}')

I think you MIGHT want this instead - asking and then loop while not correct

def ask():
  print("Please Enter your Mobile Number")
  return input("Mobile Number:\n")

mobilenum=ask() # asking 
while(len(mobilenum) < 10):
  print(f'{mobilenum} is not a valid number') # or use except
  mobilenum=ask() # asking again
else:
  print('Number entered was OK') 
mplungjan
  • 169,008
  • 28
  • 173
  • 236