“练习Python”的问题:http://www.practicepython.org/exercise/2014/12/06/22-read-from-file.html
大家好,关于打开文件和检查内容的快速问题。文件本身包含许多行,每行都有名称Darth,Luke或Lea。程序应该计算每个名称的数量。我想出了以下内容,但是当我运行该程序时,没有任何反应。
with open('PythonText.txt', 'r') as open_file:
file_contents = open_file.readlines()
##Gives a list of all lines in the document##
numberDarth = 0
numberLea = 0
numberLuke = 0
numberNames = len(file_contents)-1
while numberNames > 0:
if file_contents[numberNames] == 'Darth':
numberDarth = numberDarth + 1
numberNames - 1
elif file_contents[numberNames] == 'Lea' :
numberLea = numberLea + 1
numberNames - 1
else:
numberLuke = numberLuke + 1
numberNames - 1
pass
print('Darth =' + numberDarth)
print('Lea = ' + numberLea)
print('Luke =' + numberLuke)
有人可以帮忙吗?我无法使用可视化工具,因为程序无法读取我的文件。
答案 0 :(得分:0)
我无法使用可视化工具
您可以定义自己的file_contents
列表...
无论如何,您可能想在其他地方查看Reading a file line by line in Python。您无需将整个文件读入列表。这对于大文件尤其糟糕。
由于您只扫描名称,因此只需选择每一行,而不是像下面那样存储其余部分。
您还有一个随机pass
,它可能会退出您的代码并且不打印任何内容。事情确实发生了......你还没有打印任何其他东西。鼓励你在学习调试时打印很多东西。
所以,我可能会用字典来推荐这样的东西。
如果多个名字出现在同一行,这也会计算在内。
name_counts = {'Darth': 0, 'Lea': 0, 'Luke': 0}
with open('PythonText.txt') as open_file:
# For all lines
for line in open_file:
# For all names
for name in name_counts:
# If the name is in this line, count it
if name in line:
name_counts[name] += 1
print(name_counts)