Po两段小代码,说几个小细节____关于九九乘法表&国际象棋棋盘

# 欢迎拍砖、交流、指正

# 九九(9*9)乘法表:

code:

for i in range(1, 10):
    j = 1
    while j <= i:   
        print("%d * %d = %2d" % (j, i, i * j), end=" ")
        j += 1
    print()

1.上述代码使用 %2d  进行print的格式化输出;还有一个思路是使用制表符(\t),只需要将上述print语句修改如下:

print("%d * %d = %d\t" % (j, i, i * j), end=" ")

print("%d * %d = %d" % (j, i, i * j), end="\t")

其实,“\t”就是 保持列对齐,从字符的最左侧开始,所以有些时候,字符太长,用“\t”会超出。

运行结果如下:


注意:  对齐的差异。总之,这两种方式都可以对齐,但是如果不做处理,运行的结果可能就是这样:


细看之下,方可发现区别。


demo2:turtle库绘制国际象棋棋盘

绘制结果:             实话说,太像马赛克


code:

# 题目:要求输出国际象棋棋盘。
import turtle as t

t.hideturtle()
t.speed(10)
t.pu()
t.goto(-100, -100)
t.pd()
color_list = ['black', 'white']
for v_square in range(1, 9):
    for l_square in range(1, 9):  # 打印一行方块
        t.begin_fill()
        for line in range(1, 5):  # 打印一个方块
            t.fd(25)
            t.left(90)
        if l_square % 2 != 0:
            t.fillcolor(color_list[0])
        else:
            t.fillcolor(color_list[1])
        t.end_fill()
        t.up()
        t.fd(line * 25 / 4)
        t.pd()
    t.pu()
    t.goto(-100, (-100 + v_square * 25))
    t.pd()
    color_list[0], color_list[1] = color_list[1], color_list[0]
t.done()

细节如下:

        --1.几个循环嵌套的情况,内部的for循环很容易执行最后结果是迭代的最后一个数据,这里容易弄混,尤其再这个数据是大循环的某个变量的参数时。比如下列语句为何在程序中要”/4“,这里关于这个细节后续会写一个爬虫案例,来更好的演示。

t.fd(line * 25 / 4)

        --2. python的变量标记的数据相互交换,不需要使用传统的”冒泡“法(引入一个空的变量c),只需要写出如下语句。此题用了列表的元素交换。这是python语言的简洁之处,实际上python这里是用了  tuple 的思想。

a, b = b, a

        --3. 最好用speed方法设置绘制速,不然容易等哭。


posted @ 2018-05-25 20:33  defaulttest  阅读(221)  评论(0编辑  收藏  举报