0

要创建 print_grid 函数,我的想法是将一个字符串声明为空并添加两种类型的其他字符串(“+---”和“|”)。最后我想打印出来。但我不确定如何打印备用网格线和字符线。您能否给我一些提示以及以下代码修改?

def print_grid(puzzle: str) -> None
    """
    Displays the puzzle in a user-friendly format
    Examples of calling print grid:
    >>> print_grid("nevagonagiveu up")
    +---+---+---+---+
    | n | e | v | a |
    +---+---+---+---+
    | g | o | n | a |
    +---+---+---+---+
    | g | i | v | e |
    +---+---+---+---+
    | u | | u | p |
    +---+---+---+---+

    Parameters:
        puzzle (str): the selected puzzle words in a string.
        
    Returns:
        none

    """
    
    p = len(puzzle)/sqrt(len(puzzle))
    result1 = ""
    for i in range(p):
        result1 += "+---"
    return result1    
    result2 =""    
    for j in range (p):
        result2 += "| "
    return result2
    print 

4

2 回答 2

0

这将完成所需的工作。(我为ceil()导入了数学库,但如果这也是不允许的,那么你可以设置一个简单的条件来获得小数的上限):

import math

def print_grid(puzzle):
    list1=[' ']+[' '+item+' |' for item in puzzle]
    length=len(puzzle)
    iter_=math.ceil(math.sqrt(length))

    fallout=(iter_)**2-length
    if fallout:
        list1=list1+['   |']*fallout

    for i in range(0,length,iter_):
        print('+---'*(iter_)+'+')
        pp=''.join(list1[i+1:i+iter_+1])
        print('|'+ pp)
    
    print('+---'*(iter_)+'+')
    
print_grid('nevagonagiveu up')

Output:
+---+---+---+---+
| n | e | v | a |
+---+---+---+---+
| g | o | n | a |
+---+---+---+---+
| g | i | v | e |
+---+---+---+---+
| u |   | u | p |
+---+---+---+---+
于 2021-03-21T08:26:10.410 回答
0

我想出了以下代码:

import math

def print_grid(puzzle):
    width = int(len(puzzle) / math.sqrt(len(puzzle)))

    decorator = "+"
    for i in range(width):
        decorator += "---+"
    print(decorator)
    for j in range(0, len(puzzle), width):
        line = "|"
        for k in range(j, j + width):
            line += f" {puzzle[k]} |"
        print(line)
        print(decorator)

它不适用于所有字符串长度,但您的问题是关于打印备用行,所以我将它作为临时解决方案发布。

于 2021-03-21T07:34:49.130 回答