2011-07-08 9 views
0

以下のPythonコードを実行すると、3つの異なるシナリオに基づいてユーザー名を作成しようとしています(1.userがFirst、 (姓)、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

を。 –

答えて

0

を受け、私はあなたのメイン()間違っている。...フルネーム[2]だと思います文字列の3番目の文字です...私は間違っていない場合...?それはまだ分割されていないので。

EDIT:

だから、分割()がメインで()、あなたが行くように良いことがあります。

また、str.lower()リストを使用できないことに注目してください。それは私を去ったものです。

再編集:

これはトリックを行う必要があります。完全にテストリライト:

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 "こんにちは!このプログラムはユーザーIDを作成します。" 印刷 "" のfullName = raw_input( '完全な名前を入力してください:') ながら、真: fullName.split場合(): entirename(のfullName) ブレーク ELIFのfullname.split(): firstlast(のfullName) break elif fullname.split(): 最後(フルネーム) break main() – Burke

+1

コメントを簡潔にしてください。エラーコードを表示しないでください.... – arkigos

1

それとも、のような単純なもの記述することができます。これはPythonの3.xの印刷&入力を使用していないとのpythonに再びタグ付け

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

関連する問題