2015-11-06 2 views
-3
def getPhoneNumber(): 
    """Returns phone number if valid""" 
    validPhoneNumber = False 
    emptyString = '' 

    #prompt user for phone number 
    while not validPhoneNumber: 
     phoneNumber = input('\nEnter phone number with last four letters being alphabet'\ 
          '(910-555-book):') 

     #check if valid form 
     if len(phoneNumber) != 12 or phoneNumber[3] != '-' or \ 
      phoneNumber[7] != '-': 
      print('Invalid Entry - Must be of the form 910-555-book') 
     else: 
      validPhoneNumber = True 
      while validPhoneNumber: 
       if not phoneNumber[0:3].isdigit() or not phoneNumber[4:7].isdigit(): 
        print('Non-digit entered before end') 
        validPhoneNumber = False 
       if not phoneNumber[8:12].isalpha(): 
        print('Non-alphabet entered in last four characters') 
        validPhoneNumber = False 

    return phoneNumber 

def displayPhoneNumber(phoneNumber): 
    """Displays alphabet to phone number""" 

    translate = {'a':2, 'b':2, 'c':2, 'd':3, 'e':3, 'f':3, 'g':4, 'h':4, 'i':4, 
       'j':5, 'k':5, 'l':5, 'm':6, 'n':6, 'o':6, 'p':7, 'q':7, 'r':7, 
       's':7,'t':8,'u':8,'v':8,'w':9, 'x':9, 'y':9, 'z':9,'0':0,'1':1} 

    print(phoneNumber[0:8] + translate[phoneNumber[8]] + translate[phoneNumber[9]]\ 
      + translate[phoneNumber[10]] + translate[phoneNumber[11]]) 


#Main 
print('This program will allow you to enter a phone number with the last four') 
print('characters being in the alphabet and print out the corresponding numbers.') 

terminate = False 
while not terminate: 

    phoneNumber = getPhoneNumber() 
    displayPhoneNumber(phoneNumber) 

    #continue? 
    response = input('Enter another phone number? (y/n):') 
    if response == 'n': 
     terminate = True 

Есть что-то неправильно в getPhoneNumber? Потому что если бы не было и было отправлено displayPhoneNumber, я бы подумал, что он будет печатать. Так что я думаю, что это в getPhoneNumber. Это мой первый попыток использовать isdigit и isalpha с использованием нотации среза, так что, может быть, он там?Почему эта программа ничего не распечатывает?

ответ

1
 while validPhoneNumber: 
      if not phoneNumber[0:3].isdigit() or not phoneNumber[4:7].isdigit(): 
       print('Non-digit entered before end') 
       validPhoneNumber = False 
      if not phoneNumber[8:12].isalpha(): 
       print('Non-alphabet entered in last four characters') 
       validPhoneNumber = False 

Если phoneNumber является допустимым номером телефона, validPhoneNumber никогда не будет ложным, и поэтому цикл while validPhoneNumber будет работать вечно.

+0

Ahh. Благодаря! Я знал, что это должно быть что-то простое. – Trey