问题描述
Ahmed正在将计算机奥林匹克参赛者的姓名的最终清单发送给成绩审查委员会,以便该委员会可以打印最终入境卡,但是由于考试期间没有特定的格式来注册姓名,因此参与者被提名为标准。他们没有写自己。此外,它以参加比赛时使用的每种语言名称的延续形式书写,并且在每种名称的开头都指定了人的性别。名词的标准格式是:名词的第一个字母为大写,其余的字母为小写。编写一个程序,从输入中读取参赛者的编号,名称,性别和语言,根据性别分离名称,对其进行标准化,并在每个名称的前面写下与之竞争的语言。 (在输出中,应先打印出女人的性别,然后再打印出男人的性别。每种性别的姓名都应以英文字母打印。)
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
我该如何纠正此代码?如何纠正大写和小写字母case
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[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[2])
解决方法
在执行任务时,您不会按性别排序,也不会按名称字母排序。您的代码会立即打印。
您需要
- 获取所有数据
- 拆分并排序
- 修正拼写
,然后以正确的顺序打印:
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
阅读: