簡體   English   中英

在python中不使用for循環打印網格的更好方法

[英]Better way to print a grid without using a for loop in python

我正在做 Think Python 書中的練習 3.3,它要求我們編寫一個程序而不使用 for 循環來打印以下網格(僅使用目前介紹的概念 - 使用 * 運算符的字符串復制、簡單函數和將函數作為參數傳遞)

+ - - - -  + - - - -  +
|          |          |
|          |          |
|          |          |
|          |          |
+ - - - -  + - - - -  +
|          |          |
|          |          |
|          |          |
|          |          |
+ - - - -  + - - - -  +

def print_line(start_char, middle_char):
    print(start_char, middle_char * 4, end=" ")
    print(start_char, middle_char * 4, start_char)


def draw_grid():
    # print("+", "- " * 4, "+", "- " * 4, "+")
    print_line("+", "- ")
    # print("|", "  " * 4, "|", "  " * 4, "|")
    print_line("|", "  ")
    print_line("|", "  ")
    print_line("|", "  ")
    print_line("|", "  ")
    print_line("+", "- ")
    print_line("|", "  ")
    print_line("|", "  ")
    print_line("|", "  ")
    print_line("|", "  ")
    print_line("+", "- ")


if __name__ == "__main__":
    draw_grid()

以下是我的問題:

  1. 在python中有沒有更好的方法來做到這一點。 我是 python 新手,想用這個簡單的程序來深化 python 結構

  2. 在print_line函數中,我想重復打印“+ - - - -”兩次。 因此,我想看看是否可以復制組合字符串。 但是當我使用像print((start_char, middle_char * 4)*2)這樣的括號時,它最終打印了括號。 有沒有辦法實現這一目標

print((start_char, middle_char * 4)*2)

這將創建一個包含兩個元素的元組。

我想你可能想做的是這個;

print((start_char + middle_char * 4)*2)
#                 ^ This concats the strings, instead of making a tuple.

我認為這應該足以讓你回到正確的道路上。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM