我想写一段代码,让用户输入一个名字,然后读取一个文件并显示这个人有多少邮件。
文件名为mail.txt
Jane Fairfax,Letter
Frank Churchill,Letter
Emma Woodhouse,Letter
Frank Churchill,Letter
Harriet Smith,Package
Emma Woodhouse,Letter
Philip Elton,Package
Emma Woodhouse,Package
程序应该是这样工作的。
Name: Emma Woodhouse
2 Letters
1 Package
如果他们有一个包裹和两个字母,
Name: Jane Fairfax
1 Letter
No Packages
如果他们有1封信而没有包裹,如果这个人没有任何邮件,你的程序应该这样工作。
Name: Elizabeth Bennet
No mail
这是我目前的代码(没有用)
name = input('Name: ')
mail = open('mail.txt')
m = mail.readlines()
l = ''
ln = 0
p = []
pn= 0
for line in m:
if name in line:
l= line.split(',')
if l[1] == 'Letter':
ln= ln+1
else:
pn = pn+1
print(str(ln) + ' Letters\n' + str(pn) + ' Packages')
而这是它返回的内容。
Name: Emma Woodhouse
0 Letters
3 Packages
我正在努力解决这个问题,我甚至还没有开始添加额外的元素!!我会继续努力,但一些帮助input将非常感激! (我想我可能要使用(def),但我不确定...)谢谢!
你的 l[1]
包含一个新的行字符。如果你打印它,你会发现它=='Letter/n',因此不等于'Letter'。
你可以 .strip()
你的线或l[1]或使用 if 'Letter' in l[1]
以使它能容忍白色空间。
由于它不匹配'Letter',它总是进入 else(包)块。你也许应该明确地测试包,并将 else 子句作为一个未知的异常情况。