首页 > 解决方案 > 排序python(打印大写/小写字母)

问题描述

艾哈迈德正在将计算机奥赛参赛者的最终名单发送给结果审查委员会,以便委员会打印最终的参赛卡,但由于在考试期间没有具体的姓名注册格式,参赛者被提名为标准。他们不是自己写的。此外,它被写在它参加比赛的每个语言名称的延续中,并且在每个名称的开头,都指定了人们的性别。名词的标准形式是名词的第一个字母大写,其余字母小写。编写一个程序,从输入中读取参赛者的人数、姓名、性别和语言,根据性别区分姓名,将其标准化,并在每个名称前写下它与之竞争的语言。(在输出中,首先应该打印女性的性别,然后是男性的性别。每个性别的名字都应该用英文字母打印。)

 Sample input:
     m.hosSein.python
     f.miNa.C
     m.aHMad.C++
     f.Sara.java
    Sample output:
    f Mina C
    f Sara java
    m Ahmad C++
    m Hossein python

如何更正此代码?如何更正大写和小写字母?

def Olampiad(n):
    my_list = []
    for i in range(0, n):
        s = input()
        s = s.lower()
        my_list.append(s.strip().split('.'))
    my_list = sorted(my_list)
    return my_list


n = int(input(''))

for char in Olampiad(n):

    if char[0] == 'f':
        if char[2] == 'c' or char[2] == 'c++' or char[2] == 'c#' or char[2] == 'java':
            print(char[0], char[1].capitalize(), char[2])
        else:
            print(char[0], char[1].capitalize(), char[2])

    if char[0] == 'm':
        if char[2] == 'c' or char[2] == 'c++' or char[2] == 'c#' or char[2] == 'java':
            print(char[0], char[1].capitalize(), char[2])
        else:
            print(char[0], char[1].capitalize(), char[2])

标签: pythonpython-3.x

解决方案


您不按性别排序,也不按名称按字母顺序排序。您的代码会立即打印。

你需要

  • 获取所有数据
  • 拆分和排序
  • 修正拼写

然后以正确的顺序打印:

print( *[f"{a} {b.capitalize()} {c}" 
            for a,b,c in sorted([input().strip().split(".") 
                                for _ in range(int(input()))],
                                key=lambda x:(x[0],x[1].lower()))], 
        sep="\n")

输入

4
m.hosSein.python
f.miNa.C
m.aHMad.C++
f.Sara.jav

你得到一个输出

f Mina C
f Sara jav
m Ahmad C++
m Hossein python 

阅读:


推荐阅读