2011-07-08 18 views
0

當我執行下面的我寫的Python代碼,(我試圖創建一個基於三個不同場景的用戶名(1.user進入第一,中間和姓氏,2.用戶輸入名字和姓氏,3.用戶只輸入姓氏,我試圖根據姓氏的前4個字符+第一個首字母(當提供時)+中間名字首字母(當提供時)。當我執行下面的代碼,使用第一+姓氏組合或只是姓,我收到根據不同的標準執行不同的分割創建一個不同的輸出

lastName = (listnames[2]) 
IndexError: list index out of range 
def entirename(fullName): 
     lowername = str.lower(fullName) 
     delimiter =' ' 
     listnames = (lowername.split(delimiter)) 
     lastName = (listnames[2]) 
     lname = lastName[0:4] 
     fInit = listnames[0] 
     fname = fInit[0] 
     mInit = listnames [1] 
     mname = mInit[0] 
     username =lname+fname+mname 
     return 
def firstlast(fullName): 
     lowername = str.lower(fullName) 
     delimiter =' ' 
     listnames = (lowername.split(delimiter)) 
     lstName = (listnames[1]) 
     lname = lastName[0:4] 
     fInit = listnames[0] 
     fname = fInit[0] 
     username = lname+fname 
     return 
def last(fullName): 
     lowername = str.lower(fullName) 
     delimiter =' ' 
     listnames = (lowername.split(delimiter)) 
     lstName2 = (listnames[0]) 
     lname = lstName2[0:4] 
     username = lname 
     return 
def main(): 
     print "Hello! This program will contruct a new userid for you." 
     print "" 
     fullName = raw_input('Please enter your full name: ') 
     while True: 
      if fullName[2]: 
       entirename(fullName) 
       break 
      elif fullname[1]: 
       firstlast(fullName) 
       break 
      elif fullname[0]: 
       last(fullName) 
       break 

main() 
+0

,因爲這是不使用python 3.x的打印和輸入重新標記,以蟒蛇。 –

回答

0

我覺得你的main()是錯誤的。......全名[2]是弦的第三個字符......如果我沒有弄錯......?由於它尚未拆分。

編輯:

所以分割()它在main(),你應該是好去。

還值得注意的是,你不能str.lower()列表。這是什麼讓我失望。

RE-EDIT:

這應該是訣竅。經過全面測試重寫:

def main(): 
    print "Hello! This program will contruct a new userid for you.\n" 
    fullstring = raw_input('Please enter your full name: ') 
    fullName = fullstring.split(' ') 
    lowerName = list() 
    for each in fullName : 
     lowerName.append(each.lower()) 
    lowerName.reverse() 
    lastname = lowerName.pop(0)[0:4] 
    lowerName.reverse() 
    if lowerName : lastname += lowerName.pop(0)[0] 
    if lowerName : lastname += lowerName.pop(0)[0] 
    return lastname 

main() 
+0

我仍然收到錯誤: def main(): print「Hello!This program will construct a userid。」 打印 「」 全名 的raw_input =( '請輸入全名:') 而真: 如果fullName.split(): entirename(全名) 休息 ELIF fullname.split(): firstlast(全名) 打破 elif fullname.split(): last(fullName) break main() – Burke

+1

儘量保持評論的簡潔。顯示錯誤不是代碼.... – arkigos

1

或者你可以寫簡單的東西,如:

def get_id(): 
    print "Hello! This program will contruct a new userid for you.\n" 
    name = raw_input('Please enter your full name: ').lower().split(' ') 
    userid = name[-1][:4] # first 4 chars of last name 
    if len(name) > 1: 
     userid += name[0][0] # first char of opt first name 
    if len(name) > 2: 
     userid += name[1][0] # first char of opt middle name 
    return userid 

userid = get_id() 
print 'userid:', userid 
+0

Python是如此美麗。 – cwallenpoole

相關問題