Python写的小九九

发布时间:2019-08-07 13:52:57编辑:auto阅读(1442)

    #学习python,多种种方法实现做九九乘法表。嵌套map,列表解释,生成器表达式功能很强大。

    # -*- coding: cp936 -*-
    
    
    
    
    
    
    
    
    def jiujiuWhile(a):
        '''use WHILE for loop'''
        y = 1
        while y <= a:
            x=1
            while x <= y:
                print "%d X %d = %-2d\t" % (x,y,x*y),
                x += 1
            y += 1
            print
    
    
    
    
    def jiujiuFor(a):
        '''use FOR for loop'''
        for y in range(1, a+1) :
            for x in range(1, y+1) :
                print "%d x %d = %-2d\t" % (x,y,x*y),
            print 
    
    
    
    
    
    def ThisLine(a):
        print "1 X %d = %-2d" % (a,a),
        for x in range(2,a+1):
            print  "\t%d X %d = %-2d" % (x,a,x*a),
        print                 
    
    def jiujiuDigui(a):
        if a>1:
            jiujiuDigui(a-1)
            ThisLine(a)
            
        elif a==1:
            ThisLine(1)
            
    
    def jiujiuList(a):
       '''用map()函数一次计算出这个小九九的一行列表''' 
       for y in range(1,a+1):
           jiujiu = map(lambda x: "%d X %d = %-2d" %(x,y,x*y) ,range(1,y+1))
           for each in jiujiu:
               print str(each)+"\t",
           print
    
    
    def jiujiuMM(a):
       '''用map()函数一次计算出这个二维小九九列表''' 
       jiujiu = map(lambda i:map(lambda x: "%d X %d = %-2d" %(x,i,x*i) ,range(1,i+1)),range(1,a+1))
       for x in jiujiu:
           for y in x:
               print str(y)+"\t",
           print 
    
    
    def jiujiuList2(a):
        '''用列表解释一次计算出这个二维小九九列表''' 
        jiujiu = [["%d X %d = %-2d" %(x,y,x*y) for x in range(1,y=1)] for y in range(1,a+1)]
        for x in jiujiu:
           for y in x:
               print str(y)+"\t",
           print 
           
    #一直在考虑能否在列表解析中使用print,没有成功。例如:[(print x) for x in range(1,9)]。今天看到别人使用join函数实现了使用列表解析一次构造出整个九九乘法表。
    
    print '\n'.join([' '.join(['%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)])
    
    #实验证明这个语句中的列表解析也可以换成生成器表达式,如下:
    print '\n'.join((' '.join(('%s*%s=%-2s' % (y,x,x*y) for y in range(1,x+1))) for x in range(1,10)))
    
    #不过这样比较费解,如果生成器表达式可以使用别的符号就更好了。
    
    
        
    jiujiuFor(9)
    jiujiuWhile(9)
    jiujiuDigui(9)
    jiujiuList(9)
    jiujiuMM(9)
    jiujiuList2(9)


    运行的结果如下,完全达到了预期的目的:


    1 x 1 = 1 	
    1 x 2 = 2 	2 x 2 = 4 	
    1 x 3 = 3 	2 x 3 = 6 	3 x 3 = 9 	
    1 x 4 = 4 	2 x 4 = 8 	3 x 4 = 12	4 x 4 = 16	
    1 x 5 = 5 	2 x 5 = 10	3 x 5 = 15	4 x 5 = 20	5 x 5 = 25	
    1 x 6 = 6 	2 x 6 = 12	3 x 6 = 18	4 x 6 = 24	5 x 6 = 30	6 x 6 = 36	
    1 x 7 = 7 	2 x 7 = 14	3 x 7 = 21	4 x 7 = 28	5 x 7 = 35	6 x 7 = 42	7 x 7 = 49	
    1 x 8 = 8 	2 x 8 = 16	3 x 8 = 24	4 x 8 = 32	5 x 8 = 40	6 x 8 = 48	7 x 8 = 56	8 x 8 = 64	
    1 x 9 = 9 	2 x 9 = 18	3 x 9 = 27	4 x 9 = 36	5 x 9 = 45	6 x 9 = 54	7 x 9 = 63	8 x 9 = 72	9 x 9 = 81	
    1 X 1 = 1 	
    1 X 2 = 2 	2 X 2 = 4 	
    1 X 3 = 3 	2 X 3 = 6 	3 X 3 = 9 	
    1 X 4 = 4 	2 X 4 = 8 	3 X 4 = 12	4 X 4 = 16	
    1 X 5 = 5 	2 X 5 = 10	3 X 5 = 15	4 X 5 = 20	5 X 5 = 25	
    1 X 6 = 6 	2 X 6 = 12	3 X 6 = 18	4 X 6 = 24	5 X 6 = 30	6 X 6 = 36	
    1 X 7 = 7 	2 X 7 = 14	3 X 7 = 21	4 X 7 = 28	5 X 7 = 35	6 X 7 = 42	7 X 7 = 49	
    1 X 8 = 8 	2 X 8 = 16	3 X 8 = 24	4 X 8 = 32	5 X 8 = 40	6 X 8 = 48	7 X 8 = 56	8 X 8 = 64	
    1 X 9 = 9 	2 X 9 = 18	3 X 9 = 27	4 X 9 = 36	5 X 9 = 45	6 X 9 = 54	7 X 9 = 63	8 X 9 = 72	9 X 9 = 81	
    1 X 1 = 1 
    1 X 2 = 2  	2 X 2 = 4 
    1 X 3 = 3  	2 X 3 = 6  	3 X 3 = 9 
    1 X 4 = 4  	2 X 4 = 8  	3 X 4 = 12 	4 X 4 = 16
    1 X 5 = 5  	2 X 5 = 10 	3 X 5 = 15 	4 X 5 = 20 	5 X 5 = 25
    1 X 6 = 6  	2 X 6 = 12 	3 X 6 = 18 	4 X 6 = 24 	5 X 6 = 30 	6 X 6 = 36
    1 X 7 = 7  	2 X 7 = 14 	3 X 7 = 21 	4 X 7 = 28 	5 X 7 = 35 	6 X 7 = 42 	7 X 7 = 49
    1 X 8 = 8  	2 X 8 = 16 	3 X 8 = 24 	4 X 8 = 32 	5 X 8 = 40 	6 X 8 = 48 	7 X 8 = 56 	8 X 8 = 64
    1 X 9 = 9  	2 X 9 = 18 	3 X 9 = 27 	4 X 9 = 36 	5 X 9 = 45 	6 X 9 = 54 	7 X 9 = 63 	8 X 9 = 72 	9 X 9 = 81
    1 X 1 = 1 	
    1 X 2 = 2 	2 X 2 = 4 	
    1 X 3 = 3 	2 X 3 = 6 	3 X 3 = 9 	
    1 X 4 = 4 	2 X 4 = 8 	3 X 4 = 12	4 X 4 = 16	
    1 X 5 = 5 	2 X 5 = 10	3 X 5 = 15	4 X 5 = 20	5 X 5 = 25	
    1 X 6 = 6 	2 X 6 = 12	3 X 6 = 18	4 X 6 = 24	5 X 6 = 30	6 X 6 = 36	
    1 X 7 = 7 	2 X 7 = 14	3 X 7 = 21	4 X 7 = 28	5 X 7 = 35	6 X 7 = 42	7 X 7 = 49	
    1 X 8 = 8 	2 X 8 = 16	3 X 8 = 24	4 X 8 = 32	5 X 8 = 40	6 X 8 = 48	7 X 8 = 56	8 X 8 = 64	
    1 X 9 = 9 	2 X 9 = 18	3 X 9 = 27	4 X 9 = 36	5 X 9 = 45	6 X 9 = 54	7 X 9 = 63	8 X 9 = 72	9 X 9 = 81	
    1 X 1 = 1 	
    1 X 2 = 2 	2 X 2 = 4 	
    1 X 3 = 3 	2 X 3 = 6 	3 X 3 = 9 	
    1 X 4 = 4 	2 X 4 = 8 	3 X 4 = 12	4 X 4 = 16	
    1 X 5 = 5 	2 X 5 = 10	3 X 5 = 15	4 X 5 = 20	5 X 5 = 25	
    1 X 6 = 6 	2 X 6 = 12	3 X 6 = 18	4 X 6 = 24	5 X 6 = 30	6 X 6 = 36	
    1 X 7 = 7 	2 X 7 = 14	3 X 7 = 21	4 X 7 = 28	5 X 7 = 35	6 X 7 = 42	7 X 7 = 49	
    1 X 8 = 8 	2 X 8 = 16	3 X 8 = 24	4 X 8 = 32	5 X 8 = 40	6 X 8 = 48	7 X 8 = 56	8 X 8 = 64	
    1 X 9 = 9 	2 X 9 = 18	3 X 9 = 27	4 X 9 = 36	5 X 9 = 45	6 X 9 = 54	7 X 9 = 63	8 X 9 = 72	9 X 9 = 81	
    1 X 1 = 1 	
    1 X 2 = 2 	2 X 2 = 4 	
    1 X 3 = 3 	2 X 3 = 6 	3 X 3 = 9 	
    1 X 4 = 4 	2 X 4 = 8 	3 X 4 = 12	4 X 4 = 16	
    1 X 5 = 5 	2 X 5 = 10	3 X 5 = 15	4 X 5 = 20	5 X 5 = 25	
    1 X 6 = 6 	2 X 6 = 12	3 X 6 = 18	4 X 6 = 24	5 X 6 = 30	6 X 6 = 36	
    1 X 7 = 7 	2 X 7 = 14	3 X 7 = 21	4 X 7 = 28	5 X 7 = 35	6 X 7 = 42	7 X 7 = 49	
    1 X 8 = 8 	2 X 8 = 16	3 X 8 = 24	4 X 8 = 32	5 X 8 = 40	6 X 8 = 48	7 X 8 = 56	8 X 8 = 64	
    1 X 9 = 9 	2 X 9 = 18	3 X 9 = 27	4 X 9 = 36	5 X 9 = 45	6 X 9 = 54	7 X 9 = 63	8 X 9 = 72	9 X 9 = 81


关键字

上一篇: python关于Mysql操作

下一篇: python字符编码