有人能帮忙写个简单的按名字首字母排序python程序吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有人能帮忙写个简单的按名字首字母排序python程序吗?相关的知识,希望对你有一定的参考价值。

就是输入几个人的名字,按照姓的字母顺序排列,如果姓相同,就按名的字首字母排列,下面这个是范例:
How many names do you want to enter? 5
Enter name #1: Bill Clinton
Enter name #2: Michael Jackson
Enter name #3: Tony Blair
Enter name #4: Janet Jackson
Enter name #5: Oprah Winfrey
The names in order are:
Blair, Tony
Clinton, Bill
Jackson, Janet
Jackson, Michael
Winfrey, Oprah

参考技术A #--encoding:utf-8--
def sortName(list):
#保存名字和第一个字母的map
nameMap =
#保存第一个字母并稍后进行排序
nameList =[]
for i in list:
nameMap[i[0]] = i
nameList.append(i[0])
nameList.sort()
for i in nameList:
print(nameMap[i])

if __name__ == '__main__':
list = ['Michael jack','Bill Cliton','Tony']
sortName(list)

运行结果:

Bill Cliton
Michael jack
Tony

汗 ,还有第二个字母,没看清。。不过原理一样的,map中key保存两个字母,就行了

修改后

#--encoding:utf-8--
def sortName(list):
#保存名字和第一个字母的map
nameMap =
#保存第一个字母并稍后进行排序
nameList =[]
for i in list:
len = i.find(' ')
str = i[0]
if(len > 0):
str = i[0]+i[len+1]
print str
nameMap[str] = i
nameList.append(str)
nameList.sort()
for i in nameList:
print(nameMap[i])

if __name__ == '__main__':
list = ['Michael jack','Michael cack','Michael zack','Bill Cliton','Tony']
sortName(list)
结果:
Bill Cliton
Michael cack
Michael jack
Michael zack
Tony
参考技术B b=[ 'Bill Clinton','Michael Jackson','Tony Blair','Janet Jackson','Oprah Winfrey']
c=[i.split(' ') for i in b]
a=lambda x:(x[1][0],x[0][0])
c.sort(key=a)
for i in c:print(i[1],' ',i[0])

python: 怎样写一个函数把名字大写并变成下面这样?

参考技术A

其实这个很简单的。这几个英文字母可以看做是“逐行扫描”打印出来的。第一次打印,会依次打印字符串CARTER的第一行,然后是第二行。


所以,可以设计一个字典来存储每个字母第一行到第六行的字符。如字母A:

dic = 
    'A' : [
        '    *      ',
        '   *  *    ',
        '  *******  ',
        ' *       * ',
        '*         *',
    ]


然后循环6次打印各行即可。打印时将星号*替换为相应的字母。


望采纳,谢谢!

本回答被提问者采纳

以上是关于有人能帮忙写个简单的按名字首字母排序python程序吗?的主要内容,如果未能解决你的问题,请参考以下文章

请编程高手帮忙写个简单的按姓名首字母排序python程序

JAVA 汉字首字母排序

java中,中文首字母搜索是怎么实现的?

python: 怎样写一个函数把名字大写并变成下面这样?

mysql根据汉字首字母排序的方法并按字母分组

java如何给中文名字 按拼音的首字母分组