一、矩形
实质上这两种方法是一样的,只不过方法一中s的作用相当于方法二中end=' '的作用
#方法一
for i in range(1,10):
for j in range(1,10):
print(str.format('{0}*{1}={2}\t',i,j,i*j),end=' ')
print()
方法二:
for i in range(1,10):
for j in range(1,10):
print('{0:1}*{1:1}={2:<2}'.format(i,j,i*j),end=' ')
print()
方法三:
for i in range(1,10):
s = ''
for j in range(1,10):
s += str.format('{0:1}*{1:1}={2:<2}\t',i,j,i*j)
print(s)
#方法四:
for i in range(1, 10): #外循环
s = ' '
for j in range(1, 10): #内循环
s += str.format("{0:1}*{1:1}={2:<3} ", i, j, i * j)
print(s)
tip:
(1)print输出的两种形式,一是print('i={0},j={1}'.format(i,j)),二是print(str.format('i={0},j={1}',i,j))在这两个表达式都是用i的值代替{0},用j的值代替{1},因为i表示第0个变量,j表示第1个变量。如果print中有end=' '(注:引号中有空格)表明这一个print与下一个print输出的表达式之间与一个空格连接;如果print中有end=' '(注:引号中无空格)表明这一个print与下一个print输出的表达式之间紧紧挨着,中间无空格连接。
(2){2:<2}表示第2个变量(位于冒号左边的2)占两个空格的位置(位于冒号右边的2),并且左对齐(因为存在“<”,故左对齐;如果不存在“<”,则右对齐)。
如果为{2:2}表示第2个变量(位于冒号左边的2)占两个空格的位置(位于冒号右边的2),默认右对齐。
(3)!!!!!!重要区别:方法一和方法二是通过end=' '(注:引号中有空格)来连接一行中两个不同的式子,两个式子之间存在空格;方法三和方法四是通过s来连接一行中两个不同的式子,两个式子不存在空格。end=''(注:引号中无空格)与s的作用是等价的,只是起到连接的作用,不会使得让一行中两个式子之间存在空格。因此,在方法三相比方法二中倒数第二行多了个'\t',方法四相比方法二把{2:<2}变成了{2:<3}, 方法三和方法四与方法二的差别都是为了弥补s只能一行中两个不同的式子连接而中间并不存在空格的不足。
运行结果:
二、上三角
#上三角
for i in range(1,10):
for k in range(1,i):
print(' ',end=' ') #单引号中有6个空格,因为倒数第二行输出的内容需要占6个空格的位置
for j in range(i,10):
print('{0:1}*{1:1}={2:<2}'.format(i,j,i*j),end=' ')
print()
#上三角
for i in range(1,10):
for k in range(1,i):
print(str.format(' \t'),end='')
for j in range(i,10):
print(str.format('{0}*{1}={2}\t',i,j,i*j),end='')
print('')
运行结果:
三、下三角
#下三角
for i in range(1,10):
for j in range(1,i+1):
print(str.format('{0:1}*{1:1}={2:<2}\t',i,j,i*j),end=' ')
print('')
#下三角
for i in range(1,10):
s = ' '
for j in range(1,i+1):
s += str.format('{0:1}*{1:1}={2:<3}',i,j,i*j)
print(s)
运行结果: