乘法表金字塔(正三角)表示

最近复习下python,做基础的练习,偶然间看到一年前的任务:乘法表金字塔模型,是个烂尾活。哎,顺便完成了,颇有感慨,自愧不如。还是得干呐!先将代码和效果展示下:

效果的话就是这样:

代码如下:

i = 1
while i <= 9:
    j = 1
    print(" " * (50 - 4 * i),end="\t")
    while j <= i:
        print("%d*%d=%d"%(j,i,i*j),end="\t")
        while i == j:
           #print(" " *(50 - 5 * i))
           print('\t')
           break
        j += 1
    i += 1

代码其实没多少,就是有的地方需要脑筋转个弯,细心想一下还是可以想通的。

大概讲一下吧:

1.可能大家都知道,乘法表这样的肯定是两次嵌套循环,分成列和行。进入每一行后,然后再计算列。

i为行,j为列,我用的是while循环,你也可以试试for循环,效果都一样,因为是九九乘法表,所以我限定的是'while < 9',i的初值是1,即从1开始计算,然后进入循环,每一次进入每新的一行后,列都要从1开始计算,所以在while进入新的一行后,j = 1,也便于计算。

2.为了让整个乘法表程金字塔型,要给每行前面填充空格,莫要以为是将乘法表居中,实际上是它的前面填充了一定数量的空格,比如第一行就是 50 - 4 * 1 = 46个空格,第二行是42个,以此类推。你也可以将倍数改成其他的倍数。因为编译器不能让这个金字塔型的表自适应的显示在console中,所以要调距离,我就直接写了个比较大的,50空格。填充空格这儿得多思考些。

3.然后就是每行进入后,进行行和列的相乘计算,当这一行计算完后换行,进入下一行,换行的判断条件就是 i = j,

也就是到了3 * 3 ,4 * 4之类的这里,到了每行的末尾,进行换行。

4.一个小提示,每一行打印后,end='  ',里面最好写上\t,它可以让文本垂直方向对齐。界面美观。

我的这段程序也有不足之处,就是这个界面需要自己调试,选出合适的大小,直接以实参的形式作为控制和限定。

 

看到这里有没有想法吧这个三角倒过来呢?

必须有啊,不多说,上代码

i = 9
while (0 < i) and (i <= 9):
    j = 1
    print(" " * (50 - 4 * i), end="\t")
    while j <= i:
        print("%d*%d=%d" %(j,i,i*j),end="\t")
        while i == j:
            print('\t')
            break
        j += 1
    i -= 1

效果如下:

就是做一个简单的变通即可,从最大的基数9开始,逢 i == j换下一行就行。

仔细对比两处代码哪里不一样,效果确实像金字塔一行翻天覆地。

 

到了这里我不知道小伙伴们还有没有想法,反正我有想法:搞一个菱形怎么样?

作为一个程序员,花里胡哨的两下还是得玩玩吧,是吧,哈哈。

其实也没啥,就是将两个对称的三角连在一起就可以了,连接后 9 * 9的那一行就多了一行,这个直接将金字塔的循环改成

while i  <=  8即可。

这个漂亮的diamond就出世了!

效果如下:

代码也分享出来吧:

i = 1
while i <= 8:
    j = 1
    print(" " * (50 - 4*i),end="\t")
    while j <= i:
        print("%d*%d=%d"%(j,i,i*j),end="\t")

        while i == j:
           #print(" " *(50-5*i))
           print('\t')
           break
        j += 1
    i += 1
#此处分隔
i = 9
while (0 < i) and (i <= 9):
    j = 1
    print(" " * (50 - 4 * i), end="\t")
    while j <= i:
        print("%d*%d=%d" %(j,i,i*j),end="\t")
        while i == j:
            print('\t')
            break
        j += 1
    i -= 1

好好看,好好学哈,是不是很有意思。

继续学习,人生苦短,我用python。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值