2017-10-05 26 views
-4

はPythonのコースに私の紹介のためのプログラムの支援を必要とする:のPython:ニード支援

が彼らの最初、中間、最後の名前を含む文字列をユーザーに要求するプログラムを書きます。プログラムは、入力されたイニシャルを表示するために入力を修正します。人がミドルネームとして "NA"を入力した場合、プログラムは姓と名の頭文字のみを表示するはずです。プログラムをテストするには、次の文字列を使用します。

Alfred E. Newman A.E.N. John NA Smith J.S.

これは私がこれまで持っているものです:プログラムの動作

def main(): 

    index = 0 

    #first_name = input("Please enter your first name: ") 
    #middle_name = input("Please enter your middle name: ") 
    #last_name = input("Please enter your last name: ") 

    #first_initial = first_name[0].upper() + "." 
    #middle_initial = middle_name[0].upper() + "." 
    #last_initial = last_name[0].upper() + "." 

    #print("Here are your initials: ", first_initial, middle_initial, last_initial) 

    full_name = input("Please enter your full name (with spaces): ") 
    f_i = "" 
    m_l_i = "" 

    for ch in full_name: 
     if index == 0: 
      f_i = ch.upper() + "." + " " 
     if ch == " ": 
      index += 1 
      m_l_i += full_name[index].upper() + "." + " " 
      index += -1 

     index += 1 

    full = f_i + m_l_i 

    print("Your initials are: ", full) 

main() 

が、ミドルネームは「NA」

+3

宿題を自分で行います。 – mikeb

+0

入力文字列を['split'](https://docs.python.org/2/library/string.html#string.split)する方が簡単かもしれません。また、私は 'f_i'のような変数名を避けるでしょう。もっと説明的なものを使用してください。 –

答えて

0

反復処理文字であると私はIFを追加すると問題が生じています-characterは問題をより困難にします。あなたは

middle_name = "" if middle == "NA" else ... 
0

はこれを試してみてください非常に簡単です.split()メソッドを使用して文字列を分割し、名前

first, middle, last = full_name.split() 

を取得するためにを開梱を使用することができます。

def get_initials(name): 
    """ Return initials of first, last and middle name. 
    If the middle name is 'NA', return only the initials of the first and the last name. 

    >>> get_initials("Alfred English Newman") 
    >>> 'A.E.N.' 
    >>> get_initials("John NA smith") 
    >>> 'J.S.' 
    """ 

    first, middle, last = name.lower().split() 

    if middle == 'na': 
     initials = first[0] + '.' + last[0] + '.' 
    else: 
     initials = first[0] + '.' + middle[0] + '.' + last[0] + '.' 

    return initials.upper() 


full_name = input("Please enter your full name (with spaces): ") 

print(get_initials(full_name)) 

カップルのテストの実行:

Please enter your full name (with spaces): John NA smith 
J.S. 

Please enter your full name (with spaces): alfred e newman 
A.E.N. 

Please enter your full name (with spaces): Alfred English Newman 
A.E.N.