Think Python Exercise 3.3

注意:请使用我们目前学过的语句和特性来完成本题。

  1. 编写一个能画出如下网格 (grid) 的函数:
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +
|         |         |
|         |         |
|         |         |
|         |         |
+ - - - - + - - - - +

提示:你可以使用一个用逗号分隔的值序列,在一行中打印出多个值:

print('+', '−')

print 函数默认会自动换行,但是你可以阻止这个行为,只需要像下面这样将行结尾变成一个空格:

print('+', end=' ')
print('−')

这两个语句的输出结果是+ −

一个没有传入实参的print 语句会结束当前行,跳到下一行。

  1. 编写一个能够画出四行四列的类似网格的函数。

致谢: 这个习题基于 Practical C Programming, Third Edition 一书中的习题改编,该书由 O’Reilly 出版社于 1997 年出版。

第一小题

一行行来写

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
def paintgrid2x2():
    print("+","- "*4,end="")
    print("+","- "*4,end="+\n")
    print("|"," "*7,"|", " "*7,"|")
    print("|"," "*7,"|", " "*7,"|")
    print("|"," "*7,"|", " "*7,"|")
    print("|"," "*7,"|", " "*7,"|")
    print("+","- "*4,end="")
    print("+","- "*4,end="+\n")
    print("|"," "*7,"|", " "*7,"|")
    print("|"," "*7,"|", " "*7,"|")
    print("|"," "*7,"|", " "*7,"|")
    print("|"," "*7,"|", " "*7,"|")
    print("+","- "*4,end="")
    print("+","- "*4,end="+\n")

paintgrid2x2()

第二小题

用了for循环,一行行来写太多了。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
def paintgrid3x3():
    for j in range(3):
        print("+","- "*4,end="")
        print("+","- "*4,end="")
        print("+","- "*4,end="+\n")
        for i in range(4):
            print("|"," "*8,end="")
            print("|"," "*8,end="")
            print("|"," "*8,end="|\n")
    print("+","- "*4,end="")
    print("+","- "*4,end="")
    print("+","- "*4,end="+\n")
paintgrid3x3()

效果:

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