【问题标题】:Python 3 Program to print the Initials of a name and with surnamePython 3程序打印姓名和姓氏的首字母
【发布时间】:2017-06-08 11:47:39
【问题描述】:

程序:输入姓名并打印姓名首字母和姓氏。

输入:- Ted Vivian Mosby
输出:- T V Mosby

使用 Python 3 在线编译器:-

https://repl.it/languages/python3


user = input('Please Enter your name \n')
length = len(user)
value=0

for a in range(0,length-1):
    if a==" ":
      value=a

for b in range(0,value):
    if b==0:
      print(user[0])
    elif user[b]==" ":
      print(user[b+1])

for c in range(value+1,length):
    print(user[c])

我的输出是:-

请输入您的姓名
泰德·维维安·莫斯比
电子

V

v

一个
n

M
o
s
b
是的

【问题讨论】:

  • for a in range(0,length-1): if a==" ": value=a 这是找最后一个Word的起始值
  • for b in range(0,value): if b==0: print(user[0]) elif user[b]=="": print(user[b+1]) --------这是打印姓氏前的首字母。
  • for c in range(value+1,length): print(user[c]) ----------- 只打印姓氏

标签: python-3.x


【解决方案1】:

这是一种 pythonic 的方法。请注意,它会考虑所有名称,无论有多少中间名。

name = input("Please enter a name: ")
names = name.split()
initials = [x[0] for x in names[:-1]]
print(*initials, names[-1])


"""
Broken down:
name.split() = ['Ted', 'David', 'Vivican', 'Mosby']   Note ive added an extra name for show
name.split()[:-1] = ['Ted', 'David', 'Vivican']
[x[0] for name in ['Ted', 'David', 'Vivican']] = ['T', 'D', 'V']
print(*initials) unpacks each value in the list to the function eg
print(*['T', 'D', 'V']) == print('T', 'D', 'V')
"""

【讨论】:

  • 收到以下警报:- Traceback(最近一次调用最后一次):文件“python”,第 1 行,在 NameError: name 'name' is not defined
  • 现在可以使用了,谢谢。如果我接受用户输入而不是静态保存名称,那也应该可以正常工作?
  • 是的,它会的,我已经编辑了第一行来告诉你如何去做。
  • 完美,谢谢。
  • 如果您能接受我的回答,我将不胜感激。
【解决方案2】:

使用split() 分隔名称。然后打印每个名字的第一个字符,但打印整个姓氏。

user = input('Please Enter your name \n')
names = user.split()

for i in range(0, len(names)):
    if i < len(names) - 1:
        # print first char only, no newline at the end
        print(names[i][0], end=" ") 
    else:
        # print entire last name
        print(names[i]) # print entire name

【讨论】:

  • 感谢您帮我解决这个问题,该程序运行良好。
【解决方案3】:
user = input('Please Enter your name \n')
length = len(user.split(" "))
value=0
print(length)
for a in user.split(" "):
   if(value==length-1):
      print(a)
   else:
      print(a[0],end=' ')
   value+=1

【讨论】:

  • 谢谢你帮我解决这个问题,你能帮我理解你程序中的以下行吗:- for a in user.split(" "): and print(a[0],end =' ')
  • @HanibalBarca for a in user.split(" ") 将循环字符串 user 中的每个单词 print(a[0],end='' ') 用于打印如果它不是用户名的姓,则使用字符串 end =" " 以便下一个输出不会在下一行打印。
  • 感谢您的解释。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 1970-01-01
  • 1970-01-01
  • 2020-09-14
  • 2016-02-22
相关资源
最近更新 更多