2015-11-06 147 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。这是我第一次尝试使用切片符号使用isdigitisalpha,所以它可能在那里?这个程序为什么不打印出任何东西?

回答

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

啊。谢谢!我知道这一定很简单。 – Trey

相关问题