在关注Python的在线课程时,我们鼓励自己编写某个程序。这不是一个标记,而只是为了练习。我不想帮助解决问题,但我需要帮助,为什么我的代码没有做我认为它会做的事情。
代码的(相关)部分如下:
raw_restaurants = file.readlines()
print(raw_restaurants)
restaurants = []
information = []
for i in raw_restaurants:
if len(information) < 5:
information.append(i.strip())
if len(information) == 5:
restaurants.append(information)
information = []
这是使用的列表。原始列表是使用file.readlines()创建的。
['Georgie Porgie\n', '87%\n', '$$$\n', 'Canadian,Pub Food\n', '\n',
'Queen St. Cafe\n', '82%\n', '$\n', 'Malaysian,Thai\n', '\n',
'Dumplings R Us\n', '71%\n', '$\n', 'Chinese\n', '\n',
'Mexican Grill\n', '85%\n', '$$\n', 'Mexican\n', '\n',
'Deep Fried Everything\n', '52%\n', '$\n', 'Pub Food\n']
问题在于我的功能是输出:
[['Georgie Porgie', '87%', '$$$', 'Canadian,Pub Food', ''],
['Queen St. Cafe', '82%', '$', 'Malaysian,Thai', ''],
['Dumplings R Us', '71%', '$', 'Chinese', ''],
['Mexican Grill', '85%', '$$', 'Mexican', '']]
这意味着关于Deep Fried Everything的整个部分已经解散了。 谁知道我做错了什么?
答案 0 :(得分:5)
您只有 4 项超过Mexican Grill
条目的空行,因此if len(information) == 5:
测试永远不会变为True。
如果其中有项目,只需再次添加information
:
for i in raw_restaurants:
if len(information) < 5:
information.append(i.strip())
if len(information) == 5:
restaurants.append(information)
information = []
if information:
restaurants.append(information)