用python输出 如下9*9 乘法口诀表。




dos窗口 python 回车才能看到打印 python 打印回车字符_python 回车字符


#####方法一#####for i in range(1,10):    for j in range(1,i+1):        print("%2d*%2d=%2d"%(i,j,i*j),end="")    print()

【评析】

图形打印题的分析方法,无外乎两点:(1)外循环控制行数,解决打印几行问题(2)内循环控制列数,解决每行打印几个图形(或式子)的问题。

当然,具体问题还需要具体分析,比如每行打印图形前有没有空格,每行打印结束还需要回车换行等等。

在python打印问题中,print函数的end参数是定义了字符串输出后的结束字符,默认是回车。因此在每行打印的过程中,为了不产生换行,我们需要自定义这个参数,比如用空格或者tab符等等。每行输出结束时(即内循环结束时)需要换行,可以直接用一个不带参数的print语句解决,因为默认输出一个回车。

#####方法二#####print(''.join([ ''.join([ "%2d*%2d=%2d"%(j,k,j*k) for k in range(1,j+1)] )  for j in range(1,10)]))

【评析】

方法二用一句打印语句结束了整个工作,非常酷!

在这个解决过程中我们用到了三个知识点:

(1)字符串的格式化输出

"%2d*%2d=%2d" % (j,k,j*k)

上面语句的意思是用j替换第一个%2d,k替换第二个,j*k替换第三个;%2d实际上是一个占位符,说明替换它的是一个整数,而且要占用2个字符位置(不足的在前面补空格);在格式字符串和实际替换值之间,用一个%间隔,并且实际替换值是多个时,要写成一个元组(用括号括起来)。

在python中可以使用的占位符如下:

'%s'%('字符串')   : 后跟字符串'%d'%整型数字   :后跟整数'%f'%浮点数   :后跟小数'%c'%ascII字符 :后跟ASCII字符'%o'%8进制  :后跟int类型数字'%x'%16进制:后跟int类型数字'%e'%科学记数法:后更数字,可以整数,也可浮点数。'%r'%('字符串')  :与%s相同,不同之处是,r 输出的是带引号的字符串,s 输出不带引号的字符串。其中'%n.mf'%()  :n表示后面的数字或字符串占用多少位数,m表示小数点后几位数,如果你前面有 - 号。表示左对齐。其中 n 和 - 号对所有%起作用,m只应用与小数。

(2)字符串连接函数join

字符串A.join(字符串列表)

意思是用字符串A将字符串列表中的字符连接起来。

本题中,具体乘法式子之间我们用tab符连接,所以是‘’.join(...);每行内容之间使用回车符连接,所以是''.join(...)。

(3)for语句新建列表并自动赋值

info=[a for a in range(1,6)]

实际等同于:info=[1,2,3,4,5]

但这种形式可以灵活运用,比如:info=[a**2 for a in range(1,6)]

这就产生了[1,4,9,16,25]这样的列表。

在本题的第二种解法中更是把这种应用发扬光大,甚至用到了这种形式的嵌套。

另外,请猜一猜下面这句是什么意思?

print([i for i in range(1,100) if i%2==0])