[题目] 把一段字符串用"右起竖排"的古文格式输出
从 从两道趣味题目看PYTHON的简洁性 这篇博文看到的题目, 没按博主的方法, 自己写了两种.
把一段字符串用"右起竖排"的古文格式输出
直接将字符串装入二元列表:
def rotate_1(string, offset=6):
len_str = len(string)
cols = int((len_str+offset-1) / offset)
A = [['']*cols for row in range(offset)]
for col in range(cols):
for row in range(offset):
index = (cols-1-col)*offset+row
A[row][col] = string[index] if index < len_str else ' '
return A
先顺序装入, 再将二元列表顺时针旋转90度:
def rotate_2(string, offset=6):
len_str = len(string)
rows = int((len_str+offset-1) / offset)
A = [['']*offset for row in range(rows)]
for col in range(offset):
for row in range(rows):
index = row*offset+col
A[row][col] = string[index] if index < len_str else ' '
return list(map(lambda x: x[::-1], zip(*A)))
调用:
A = rotate_1('静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。')
print('\n'.join(['┊'.join(row) for row in A]))
print('='*20)
A = rotate_2('静夜思 李白床前明月光,疑似地上霜。举头望明月,低头思故乡。')
print('\n'.join(['┊'.join(row) for row in A]))
输出:
低┊举┊疑┊床┊静
头┊头┊似┊前┊夜
思┊望┊地┊明┊思
故┊明┊上┊月┊
乡┊月┊霜┊光┊李
。┊,┊。┊,┊白
====================
低┊举┊疑┊床┊静
头┊头┊似┊前┊夜
思┊望┊地┊明┊思
故┊明┊上┊月┊
乡┊月┊霜┊光┊李
。┊,┊。┊,┊白