【发布时间】:2019-05-03 11:56:29
【问题描述】:
我正在处理一个家庭作业问题,我以为我已经解决了,但是我的程序无法读取笔记本电脑上的文件,因此当我尝试运行我的代码时出现错误。这些文件的标题都是 ssa(year).txt
除了处理文件的部分之外,我尝试过的代码似乎都是正确的。我的 CSCI 导师都帮不上忙。
import csv
my_list=[]
with open("ssa2017.txt", 'r') as f:
reader = csv.reader(f,delimiter='\t')
fields = next(reader)
for row in reader:
row=[row[0],row[1],int(row[2]),row[3].lower().title(),int(row[4])]
my_list.append(row)
def func1():
state=input('Enter the State Abbreviation or just press enter: ')
if state=='':
state="US"
year=input('Enter the years you want to search: ').split()
y1=int(year[0])
y2=int(year[1])
my_dict={}
for row in my_list:
if row[2]>=y1 and row[2]<=y2 and state==row[0]:
if row[3] not in my_dict.keys():
my_dict[row[3]]=row[4]
else:
my_dict[row[3]]=my_dict[row[3]]+row[4]
sorted_by_value = sorted(my_dict.items(), key=lambda kv: kv[1],reverse=True)
print('Top 5 names')
for i,key in enumerate(sorted_by_value):
print(str(i+1)+': '+key[0]+' ('+str(key[1])+')')
def func2():
name=input('Enter the name: ').lower().title()
year=int(input('Enter the years: '))
state=input('Enter the State Abbreviation or just press enter: ')
my_dict={}
for row in my_list:
if year==row[2] and state==row[0]:
if row[3] not in my_dict.keys():
my_dict[row[3]]=row[4]
else:
my_dict[row[3]]=my_dict[row[3]]+row[4]
sorted_by_value = sorted(my_dict.items(), key=lambda kv: kv[1],reverse=True)
for i,key in enumerate(sorted_by_value):
if key[0]==name:
print('\nThe name',name,'was in position',i+1)
while True:
print('\n1) Search by Year/Location\n2) Search by name\n3) Quit')
choice=input('Select the option: ')
if choice=='1':
func1()
elif choice=='2':
func2()
elif choice=='3':
break
else:
print('Please select the valid option.')
我不是想让你做我的硬件,但这是预期的。 主页 / 学习 / 工程 / 计算机科学 / 计算机科学问答 / in python 3 the u.s.社会保障局公布每个孩子的婴儿名字清单... 问题:在 PYTHON 3 中,美国社会保障局每年都会发布婴儿姓名列表...... 在 Python 3 中
自 1880 年以来,美国社会保障局每年都会公布婴儿姓名列表。 每年的数据存储在单独的文件中。这些文件都有格式
姓名、性别(男/女)、号码
Number 是该名称在该年的孩子的数量。对这些文件进行了编辑,使其更短,并且仅包含该年份的 >= 100 个条目的名称。
您将创建一个程序以从这些文件中提供信息:
-对于所需的每一年数据,您的程序必须读取文件“ssaxxx.txt”,其中 xxxx 是所需的年份。
-数据文件格式是一致的,对于这个作业,你不必检查数据文件中的错误
-您无需检查每个用户输入(选择和年份)是否存在错误并在不崩溃的情况下处理这些错误
-该程序必须包含一个名为 name() 的函数。这个函数有两个参数。第一个是整数年份,第二个是要搜索的名称类型:“M”代表男性,“F”代表女性,“E”代表所有人。该函数必须返回该年份最流行的名称以及该名称的出现次数。
要开发/测试程序,您需要获取从 1980 年到 2018 年的数据文件,这些数据文件可以在下面的文件部分中的 zip 文件中找到。您不需要将数据文件上传到 Zybooks(仅上传您的程序),它们仅用于您的开发目的。
程序必须提供以下选项
-第一个选项将扫描文件并打印每年最流行的名字(无论是男性还是女性)以及每年给出的该名字的数量
-第二个选项将查看所有年份并找到总体上最受欢迎的名称以及该名称的总体总数
-第三个选项和第一个一样,只是它会打印出每年最流行的男性名字以及每年给的名字的编号
-第四个选项将打印每年最流行的女性名字以及该年给出的该名字的总数
在每个选项(除了退出)之后,询问开始和结束年份。
This is what the SSA file looks like
这是文件的一部分:
Aiden,M,11259
Cielo,F,143
Zephaniah,M,136
Allyson,F,634
Jessa,F,307
Omar,M,1639
Micaela,F,239
Annalee,F,287
Nolan,M,5375
Ronnie,M,238
Nico,M,747
Milani,F,536
Kaila,F,133
Zakari,M,106
Emilie,F,248
Rex,M,428
Luciana,F,782
Karla,F,552
Misael,M,243
Zendaya,F,258
Rayna,F,391
Krystal,F,200
Nathaly,F,213
Brielle,F,2880
Daenerys,F,110
Galilea,F,527
Aspyn,F,178
Giovanni,M,2783
【问题讨论】:
-
您能否展示一下
ssa2017.txt的外观,以及您在运行此代码时遇到什么错误? -
将文件添加到问题中!
-
我添加了它,我无法复制它,因为它太大了但是我添加了一个截图我也截图了错误消息
-
您可以随时在问题中添加部分txt文件,也可以在此处粘贴csv和错误,而不是发布图片!
-
我添加了您要求的特定文件的一部分
标签: python python-3.x