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方法设置绘制速,不然容易等哭。