Python挑战赛 - 等级5,几乎就在那里

时间:2011-11-08 06:05:27

标签: list python-3.x

我现在处于第5级,我认为我被困的whare的例子是最好的, 泡菜的内容是:

[(' ', 95)]
[(' ', 14), ('#', 5), (' ', 70), ('#', 5), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
[(' ', 15), ('#', 4), (' ', 71), ('#', 4), (' ', 1)]
但是,这要长得多。 我的代码现在是:

!#/usr/bin/python3
import pickle
with open("/home/hanan/Downloads/banner.p", 'rb') as file:
file = pickle.load(file)
for line in file:
    for each_item in line:
        print(each_item[0]*each_item[1], end='')

我想做什么(因为我已经理解它是问题的解决方案),就是打印每个符号(例如''或#)乘以它之后的数字,所以('#',5)#标志将打印出类似#####。

我更愿意看到我当前的代码有什么问题,如果你有其他方法可以解决,我很乐意看到它。

编辑:经过一番思考后,我在这里看到,pickle文件实际上包含一个列表列表,并且在每个第二个列表(上面的代码行)中都有项目(each_item),它们是元组类型(基本上)它们就像列表但不能改变),因此each_item [x](x =数字)。

BTW:你可以看到我使用的是python 3。

感谢。

1 个答案:

答案 0 :(得分:2)

您不会在每行末尾打印任何新行。

请改为尝试:

for line in file:
    print(''.join(c * n for c, n in line))

或者,只需在现有代码中添加对print的调用:

for line in file:
    for each_item in line:
        print(each_item[0]*each_item[1], end='')
    print()