问题:
我的在线课程中有一个练习活动,它告诉我操作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']
答案 0 :(得分:0)
我会设置包含单个字符的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:简单地反转所有字符串 - 垂直和对角线:如上所述。