我有一个普通形式的txt文件:
Last Name
First Name
Year
Medal (This line only contains one number either 1,2,3 meaning gold,silver,bronze respectively)
我尝试做的是让用户输入一年,并计算当年获得多少枚奖牌。然后有另一个功能,用户可以输入名字和姓氏,该功能应该打印出来"约翰史密斯在1864年赢得了金牌(1)奖牌"
def medals(medalcount):
year= str(input("Please enter a year: "))
with open("textfile") as f:
medalcount+=f.read().count(year)
return medalcount
基本上我使用此函数来计算用户输入的字符串年份在txt文件中出现的次数。 至于下一部分,我仍然对如何实际接近它感到困惑。
示例:
Smith
John
1896
1
>>> Please enter year: 1896
15 medals won in this year
答案 0 :(得分:0)
def readFile(infilepath):
answer = {}
with open(infilepath) as infile:
for lastname in infile:
lastname = lastname.strip()
firstname = infile.readline().strip()
year = infile.readline().strip()
medal = infile.readline().strip()
if year not in answer:
answer[year] = {}
if lastname not in answer[year]:
answer[year][lastname] = {}
if firstname not in answer[year][lastname]:
answer[year][lastname][firstname] = {}
if medal not in answer[year][lastname][firstname]:
answer[year][lastname][firstname][medal] = 0
answer[year][lastname][firstname][medal] += 1
return answer
def count(medalcounts):
year = input("What year would you like to check: ").strip()
answer = 0
for lastname in medalcounts[year]:
for firstname,medals in medalcounts[year][lastname].items():
answer += sum(medals.values())
print(answer, "medals were awarded in", year)
firstname = input("Enter first name: ").strip()
lastname = input("Enter last name: ").strip()
for year,yeard in medalcounts.items():
medals = yeard[lastname][firstname]
for med,count in medals.items():
print("In year", year, firstname, lastname, "won", count, '. gold silver bronze'.split()[med], "medals")
用法:
count(readFile('path/to/file'))