学习是一种借鉴,先借鉴别人的,再利用别人的方法来思考!
习题1:99乘法表变体的打印:(要么向前加,要么向右靠)
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81
思路1:循环补齐前面的空行;
unit = ' '*7
for i in range(1,10):
print(unit * (i-1),end='')
for j in range(i,10):
print("{:}*{:}={:<2}".format(i,j,i*j),end=' ')
print()
-------------------------------------------
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81
思路2:整行向右看齐;
for i in range(1,10):
line = ''
for j in range(i,10):
line += '{}*{}={:<{}}'.format(i,j,i*j,2 if j<2 else 3)
print("{:>66}".format(line))
-------------------------------------------------------------------
1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9
2*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18
3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27
4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36
5*5=25 5*6=30 5*7=35 5*8=40 5*9=45
6*6=36 6*7=42 6*8=48 6*9=54
7*7=49 7*8=56 7*9=63
8*8=64 8*9=72
9*9=81
练习2:打印菱形(面试题目)
# 思路1:对称折半思想:
n=int(input('>>>'))
val='*'
va=' '
m=n//2
for i in range(-m,m+1):
if i < 0:
print(va*(-i)+val*(n+2*i)+va*(-i))
elif i == 0:
print(val*n)
else:
print(va*i+val*(n-2*i)+va*i)
--------------------------------------------------------
>>>7
*
***
*****
*******
*****
***
*
# 思路2:优化方案:不关注后置空格,只打印前置空格(节省资源);三元表达式写法:
for i in range(-3,4):
x = -i if i < 0 else i
print(x*' ' + (7-2*x) * '*')
---------------------------------------
*
***
*****
*******
*****
***
*
练习3:打印对顶三角形
#练习:打印对顶三角形;
7 *******
5 *****
3 ***
1 *
3 ***
5 *****
7 *******
思路一:找规律
for i in range(-7,8,2): # [-7,-5,-3,1,3,5,7]
if i == -1:
continue
else:
print(int((7-abs(i))/2)*' '+'*'*abs(i))
----------------------------------------------
*******
*****
***
*
***
*****
*******
练习4:打印闪电;
练习:打印闪电;
*
**
***
*******
***
**
*
# 思路1:利用条件控制;
n=7
for i in range(-3,4):
#x = -i if i<0 else i
if i < 0:
print(abs(i)*' '+(4+i)*'*')
elif i == 0:
print('*'*7)
else:
print(3*' '+(4-i)*'*')
-----------------------------------------------------
*
**
***
*******
***
**
*
网友评论