提问人:TRNF 提问时间:10/7/2023 最后编辑:trincotTRNF 更新时间:10/8/2023 访问量:31
需要帮助将网格转换为字符串
Need help converting grid to string
问:
我想将列表转换为分配的字符串。我可以转换 1 行,但我的老师希望我们转换 3 行,为生活游戏制作网格。我已经尝试了一堆不同的代码迭代,最接近的是打印第一行。
我添加了我的老师希望每行做什么,所以它应该更易于解释
def gridToString( grid ):
# create an empty string
mystr = ' '
# for each row in the grid, convert that row
for row in grid:
mystr += int(input(row))
# for each cell in the row, convert the cell
for cell in row:
mystr += int(input(cell))
# add symbol to the string for this cell
# symbol + for cells that hold a zero
if cell == 0:
cell = '+'
# letter O for cells that are non-zero
elif cell == 1:
cell = 'O'
# add a newline to the string at the end of the grid row
print(mystr, '\n')
# return the string representation of the grid
return mystr
lifeGrid = [[1,1,1],
[0,0,0],
[0,0,1]]
# convert the grid to a string
gridStr = gridToString( lifeGrid )
# print the string!
print( gridStr )
print('')
答:
您的尝试中存在以下几个问题:
该函数不应调用 ,也不应调用 。该函数的目的是将作为参数给出的矩阵转换为字符串并返回该字符串。此操作不涉及任何用户输入,也不涉及输出到终端。因此,删除所有和调用。
input()
print()
input()
output()
空字符串是 ,而不是 。
''
' '
print(mystr, '\n')
不会改变.按照上面的评论去做,你应该做mystr
mystr += '\n'
两者都不能工作:这些赋值的右侧必须是字符串,因此调用(返回整数)是错误的。
mystr += int(input(row))
mystr += int(input(cell))
int()
mystr += int(input(row))
没有做任何有用的事情。 将获取此语句下方的循环中行的内容,因此应删除此语句。mystr
mystr += int(input(cell))
应该是 ,但请参阅下一点mystr += str(cell)
更改的代码是无用的,因为在更改之后,此新值将执行任何操作:
cell
if cell == 0: cell = '+' elif cell == 1: cell = 'O'
此外,如果不是 0,那么它应该是 1,所以没有必要检查它 -- 这是剩下的唯一可能性。所以让它成为一个.
cell
elif cell == 1
else
所以做:
if cell == 0: mystr += '+' else: mystr += 'O'
或更短,用作索引:
cell
mystr += '+O'[cell]
这将替换之前对 的赋值。
mystr
更正这些要点后,您将得到以下内容:
def gridToString(grid):
# not a space, but a really emmpty string:
mystr = ''
for row in grid:
# don't ask for input and don't print
for cell in row:
# assign to mystr the character that corresponds to cell
mystr += '+O'[cell]
# add a newline to the string (don't print)
mystr += '\n'
return mystr
现在它会起作用。你的问题没有解释字符串是否应该在最后有一个。它可能只是在行之间才需要的。\n
请注意,按如下方式执行此操作更像 pythonic:
def gridToString(grid):
return '\n'.join(
''.join('+O'[cell] for cell in row)
for row in grid
)
在这里,我遗漏了决赛\n
评论
上一个:为什么数组可以包含字符串的元素?
评论