这是我班上提出的问题: 编写并测试一个函数,该函数将名称作为参数并返回名称的首字母。例如," Augusta Ada King"应该返回" A.A.K。&#34 ;; " Frank Lloyd Wright"应该返回" F.L.W。&#34 ;; " Alan Turing"应该返回" A.T。"。您的解决方案应该处理任何长度的名称。
def make_intitals(name):
char_length = len(name)
initial = name[0:1]
for i in range(char_length):
if name[i] == '':
initial_location = name[i+1]
initial += '.' + initial_location
return initial.upper()
given_name = input("Enter name: ")
initials = make_intitals(given_name)
print(initials)
我不确定我做错了什么,如果有人能提供帮助,我将不胜感激
答案 0 :(得分:0)
def getInitials(full_name):
s = full_name.split(" ");
initials = [];
for i in range(0, len(s)-1):
initials.append(s[i][0])
return initials
full_name = raw_input("Please enter the name "); # Only works for Python version 3>
#full_name = input("Please enter a name"); # Works only for older versions like 2.7
res = getInitials(full_name); # Should work fine "Returns P. A. for Peter Aaron Jackson"
这对你有用吗?
答案 1 :(得分:0)
也许更简单的方法是你必须总是选择第一个字符然后迭代,如果出现空格,请使用以下索引:
s = "jon doe test"
l = list(s)
n = ""
n+= s[0]
for e, i in enumerate(l):
if i == ' ':
n+= l[e+1]
print n
你可以使用枚举,如果你想使用隐式索引,就像在C风格的循环中一样
答案 2 :(得分:0)
initials = ''
for name in full_name.split(' '):
initials += name[0] + '.'
答案 3 :(得分:0)
这是我为你写的代码,
def initial(n):
n=n.split(" ")
i=0
while i<len(n):
print n[i][0]
i=i+1
return
当您运行如下功能时:
initial("John Doe Smith")
答案将在输出中显示为: Ĵ d 小号