Ich glaube, Sie auf diese Weise in einer einfachen und „mehr pythonic“ tun können.
full_name = input("Enter your first, middle, and last name: ")
print(''.join([ch[0].upper() + '.' for ch in full_name.split()]))
ERKLÄRUNGEN
Statt eine for
Schleife über jeden Buchstaben des Namens zu tun, Sie split() Funktion sicher sein können, ohne dass die zusätzlichen Leerzeichen der einzelnen Worte kümmerten.
sentence = "hello world"
for ch in sentence.split():
print(ch) # hello
break
Nun versuchen Sie, um zu überprüfen, ob der erste Buchstabe ein uppercase
ist, aber wenn der Benutzer seinen Namen ohne uppercase
eingeben, Ihre Funktion funktioniert nicht. Eine einfachere Lösung wird den ersten Buchstaben des Wortes ch[0]
und automatisch hinzufügen, ein uppercase
zu extrahieren sein: ch[0].upper()
Vielleicht ist die Einzeiler Lösung ist verwirrend, aber die meisten der Python-Entwickler verwenden list comprehension
über for
Schleifen, wenn die Lösung ist einfach lesbar.
EDIT
Eine weitere Sache, auch wenn Sie die Initialen eines Namens eine einfache Funktion wie Print schreiben, sollten Sie immer entsprechend Schreibtests.
Ein guter Weg zu starten ist, doctests zu verwenden, weil es Sie zwingt zu beschreiben, was Ihre Funktion tut. Selbst wenn Sie denken, dass es eine Verschwendung von Zeiten ist, hilft es, viele Probleme zu überwinden, wenn Ihr Programm größer wird. Ich würde Ihnen bitte helfen, wenn Sie versuchen möchten, Ihre erste doctest
zu schreiben Wenn 'ch'' 'A'' ist, was erwarten Sie' 'A'.strip (' \ n ') 'zu Sein? –
'für ch in full_name' sollte niemals ein' \ n' als 'ch' haben, da das' input' alle Eingaben bis zum Zeilenumbruch übernimmt –
Ich denke, du verkomplizierst die Dinge. Dies sind die Schritte, die Sie benötigen: Teilen Sie die Eingabe mit 'split', verwenden Sie die Indizierung, um das erste Zeichen jedes Wortes zu erhalten, verwenden Sie '.'. Join', um diese zusammenzufügen –