问题:
我在我的在线课堂上有一个练习活动,它告诉我如何在8个不同的方向上操作字符串,并把它放在一个列表中。1.从左到右,2.从右到左,3.从上到左,4.从上到上,5.对角向左到右上,6.对角,右上至左,7.对角对角,右上至左上,8.对角,左上至右下。代码应该与给定文件的任何维度兼容。可以使用reverse方法。
任何帮助都将不胜感激。我是这方面的新手。
要操作的文本(在letters.txt文件中):
A B C D E F
G H I J K L
M N O P Q R
S T U V W X
Y Z预期输出:
leftToRight = ['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX', 'YZ']
rightToLeft = ['FEDCBA', 'LKJIHG', 'RQPONM', 'XWVUTS', 'ZY']
topToButtom = ['AGMSY', 'BHNTZ', 'CIOU', 'DJPV', 'EKQW', 'FLRX']
buttomToTop = ['YSMGA', 'ZTNHB', 'UOIC', 'VPJD', 'EKQW', 'FLRX']
bLeftToURight = ['A', 'GB', 'MHC', 'SNID', 'YTOJE', 'ZUPKF', 'VQL', 'WR', 'X']
uRightToBLeft = ['A', 'BG', 'CHM', 'DINS', 'EJOTY', 'FKPUZ', 'LQV', 'RW', 'X']
bRightToULeft = ['Y', 'ZS', 'TM', 'UNG', 'VOHA', 'WPIB', 'XQJC', 'RKD', 'LE', 'F']
uLeftToBRight = ['Y', 'SZ', 'MT', 'GNU', 'AHOV', 'BIPW', 'CJQX', 'DKR', 'EL', 'F']到目前为止打开文件并从左向右尝试的代码:
leftToRight = []
openL = open("letters.txt")
letters = openL.read()
letters = letters.replace(" ","")
for line in letters:
leftToRight.append(line.strip())
print(lefToRight)打印:
['A', 'B', 'C', 'D', 'E', 'F', '', 'G', 'H', 'I', 'J', 'K', 'L', '', 'M', 'N', 'O', 'P', 'Q', 'R', '', 'S', 'T', 'U', 'V', 'W', 'X', '', 'Y', 'Z']应该打印:
['ABCDEF', 'GHIJKL', 'MNOPQR', 'STUVWX', 'YZ']发布于 2016-05-03 09:29:33
我会设置包含单个字符的two-dimensional array (用适当的默认(可能是0-字符)填充任何未占用的字段)。然后在这两种解释中迭代它(只使用伪代码,就像您刚才询问的那样):
from 0 to height:
from 0 to width:
# collect string
# add it to LR array
# add reverted string to RL array类似的垂直,高度和宽度交替..。
对角线:
from h = 0 to max(height, width):
from w = 0 to h:
if h < height && w < width:
# add matrix[h][w] to string
#add string to list BLUR
#add reverted string to URBL
from h = max(height, width) to 0:
from w = h to max(height, width):
if h < height && w < width:
# add matrix[h][w] to string
#add string to list ULBR
#add reverted string to BRUL编辑:根据评论和编辑:
您可能需要逐行阅读,请参阅here。而不是
print line;你就会有
leftToRight.append(line.replace(" ", "").strip());您可能希望获取此循环中的最大字符串长度,以便能够在第二次访问中填充默认值(或者检查所有字符串是否具有相同的长度)。
顺便说一句: leftToRight实际上已经是您的二维数组了,您可以直接使用它生成其余的: rightToLeft:只需反转所有字符串-垂直和对角线:如上所述。
https://stackoverflow.com/questions/36999424
复制相似问题