我最近遇到了Python挑战。对于初学者来说可能更合适,所以您可能会发现它很容易解决。在这里:
编写一个程序,该程序接受大于1的整数n,然后通过 格式如下:
约翰先生1995年,
或:
[戴安娜女士1996],
可以用大写或小写字母(mr,mR,MR)写人的头衔,
然后只有一个空格键
,然后显示此人的名字,
然后只有一个空格键
,然后显示出生年份。
该计划的目标是检查同一年出生的男性和女性人数。如果特定年份出生的男性人数与该年出生的女性人数相同,则今年被认为是“好”年。但是,如果特定年份的男性和女性人数不同,则这些年份称为“不良”年份。
例如,假设我们有4个名称:
mR John 1987
MS Diana 1991
山姆先生1990
玛丽1987年
1987年是“好”年,因为今年出生的男性人数与女性相同。 另一方面,1991年和1990年是“糟糕”的年份。
现在,经过漫长的介绍,下面是我尝试解决的问题:
我正在创建一个包含n个列表的列表(称为名称列表),例如每个人一个(其中n = 2):
[[['mr','John','1995'],['ms','Diana','1993']]
然后,这段代码会产生一些问题:
checkedyears = []
for i in namelist:
malecounter = 0
femalecounter = 0
if int(namelist[i][2]) in checkedyears: #<<<THIS IS WHERE THE ERROR OCCURS<<<
continue
else:
for j in namelist:
if namelist[i][2] == namelist[j][2]:
if namelist[j][0] == "mr" or namelist[j][0] == "mR" or namelist[j][0] == "MR":
malecounter += 1
else:
femalecounter += 1
if malecounter == femalecounter != 0:
good += 1
else:
bad += 1
checkedyears.append(namelist[i][2])
我得到TypeError:列表索引必须是整数或切片,而不是列表。
因此,通过使用上面的代码,我试图比较列表中每个人的年龄。我从第一人称视角开始,使用其出生年份,然后再遍历列表中的其他人。如果我发现一个人具有相同的出生年份,则将他/她添加到适当的计数器中(男性计数器或女性计数器)。检查整个列表后,如果计数器匹配,则是“好”年,如果不匹配,则是“差”年。然后,我将今年添加到名为“ checkedyears”的列表中,因此,如果再次浏览该列表时遇到同一年,我将不再重复整个过程。
但是如上所述,我得到一个错误。
-
您能帮我找出问题吗?
-
您能建议我以其他方式解决此问题吗?