1.题目
问题描述 利用字母可以组成一些美丽的图形,下面给出了一个例子:
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
这是一个5行7列的图形,请找出这个图形的规律,并输出一个n行m列的图形。
输入格式 输入一行,包含两个整数n和m,分别表示你要输出的图形的行数的列数。 输出格式 输出n行,每个m个字符,为你的图形。
样例输入
5 7
样例输出
ABCDEFG
BABCDEF
CBABCDE
DCBABCD
EDCBABC
数据规模与约定 1 <= n, m <= 26。
2.原代码
n = int(input('n='))
m = int(input('m='))
if n >= 1 and m <= 26:
for i in range(n):
k, t1, t2 = i, 0, 1
for j in range(m):
if i >= k >= 0:
print(chr(65 + i - t1), end='')
t1, k = t1 + 1, k - 1
else:
print(chr(65 + t2), end='')
t2 = t2 + 1
print("\n")
3.拆开分析
1.拆开if部分
# n = int(input('n='))
# m = int(input('m='))
n = 3
m = 3
if n >= 1 and m <= 26: # 用if得到了题目条件
for i in range(n): # 外循环
a, b = i, 0 # 外循环内的条件
for j in range(m):
if i >= a >= 0:
print(chr(65 + i - b), end='')
b = b + 1 # 改变打印内容(改变ASCLL码)
a = a - 1 # 改变条件
else:
pass
print('\n')
2.拆开else部分
# n = int(input('n='))
# m = int(input('m='))
n = 3
m = 3
if n >= 1 and m <= 26: # 用if得到了题目条件
for i in range(n): # 外循环
a, b = i, 0 # if值
c = 1 # else值
for j in range(m): # m为内循环次数
if i >= a >= 0:
print(chr(65 + i - b), end='')
b = b + 1 # 改变打印内容(改变ASCLL码)
a = a - 1 # 改变条件
else: # 当上一行a减小到if条件不满足时,也就是a < 0时;打印后面正序的ABC...字符
print(chr(65 + c), end='')
c += 1 # 利用内循环不断循环到终点个数m
print('\n')
4.总结
总结:
1.按语句块拆分,换变量名是很好的理解方法
2.活用ASCLL码打印字符
3.由if内语句块改变现有条件跳出if条件进入else语句块
4.内循环才是真正的打印语句块内部字符次数的循环,外循环只是打印循环次数