“ValueError:创建网格时需要1个以上的值才能解包”?

2024-09-29 22:20:32 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在尝试用16个单词做一个更难的表格。我已经用9个单词做了一个网格,但不能做16个单词。我的代码中不断出现“ValueError:need more 1 value to unpack”?你知道吗

#(Hard) This is the part of the program which puts the words in a Grid.
with open('WordsExt.txt') as f:
    wordshard = random.sample([x.rstrip() for x in f],16)
    gridhard = [wordshard[i:i + 3] for i in range(0, len(wordshard), 3)]
    for x,y,z  in gridhard:
        print (x,y,z)

Tags: theto代码in网格forvaluemore
2条回答

显然,发生错误是因为gridhard包含的元素少于3个。你知道吗

在代码示例的第三行中,迭代器i的最后一个值是15,但是wordshard的长度不超过16。在这种情况下,gridhard将只包含一个字母,因此不能解压为三个值。你知道吗

你在做一个4x4网格,所以那些3需要变成4s

此外,还可以使用.join方法构建word网格的每一行,这使得输出格式更加灵活:

wordshard = [c*4 for c in 'ABCDEFGHIJKLMNOP']
gridhard = [wordshard[i:i + 4] for i in range(0, len(wordshard), 4)]
for row in gridhard:
    print(' '.join(row))

输出

AAAA BBBB CCCC DDDD
EEEE FFFF GGGG HHHH
IIII JJJJ KKKK LLLL
MMMM NNNN OOOO PPPP

如果我们将最后一行更改为print(' | '.join(row)),则输出变为:

AAAA | BBBB | CCCC | DDDD
EEEE | FFFF | GGGG | HHHH
IIII | JJJJ | KKKK | LLLL
MMMM | NNNN | OOOO | PPPP

或者,我们可以通过使用*“splat”解包操作符,并在print调用中指定分隔符字符串来获得相同的输出:

print(*row, sep=' | ')

相关问题 更多 >

    热门问题