提问人:cherishroby 提问时间:4/24/2023 最后编辑:cherishroby 更新时间:4/24/2023 访问量:35
无法让网格对齐
Cant get the grids to line up
问:
我正在使用循环在 Python 上制作一个数字滑动拼图,该函数采用一系列以逗号分隔的字符串,但网格没有对齐,我不知道为什么。
我的程序
import math
def get_size(data):
count=len(data)
sqroot=math.sqrt(count)
n=math.ceil(sqroot)
return n
def draw_row(data_list):
list_to_join=[]
for data in data_list:
if len(data)==0:
list_to_join.append(' ')
elif len(data)==1:
list_to_join.append(f' {data} ')
elif len(data)==2:
list_to_join.append(f' {data} ')
out= '│'.join(list_to_join)
return f'│{out}│'
def draw_grid(n):
top='┌'+'───┬'*(n-1)+'───┐'
number=n
print(top)
while number>0:
if number!=1:
print('│'+' x │'*n)
print("├" + "───┼" * (n - 1) + "───┤")
elif number==1:
print('│'+' x │'*n)
number=number-1
bottom='└'+'───┴'*(n-1)+'───┘'
print(bottom)#├
def milestone_1(tiles):
grid_tiles=tiles.split(',')
grid_size=get_size(grid_tiles)
print('┌───'+'┬───'*(grid_size-1)+'┐')
for number in range(grid_size):
row = grid_tiles[number*grid_size:(number+1)*grid_size]
row_string= ''
for tile in row:
if tile=='':
tile+=' '
row_string+='│{}'.format(tile)
elif len(tile)==1:
tile+=' '
row_string+='│ {}'.format(tile)
else:
tile+=' '
row_string+='│{}'.format(tile)
print(row_string + '│')
if number< grid_size-1:
print('├───' + '┼───'*(grid_size-1) + '┤')
print('└───'+'┴───'*(grid_size-1)+'┘')
milestone_1("1,2,3,4,5,6,7,8,9,10,,12,13,14,11,15")
我一整天都在做这件事,还是没有运气有人帮忙,拜托。我得到的输出
答:
0赞
Jason Chia
4/24/2023
#1
你错过了一小部分。对于所有组件,您将添加“间距”以分隔您正在绘制的网格。对于长度为 1 的整数,它的 2 个空格。对于长度为 2 的整数,其为 3 空格。但是,对于空白位置,将其定义为空格 ''。因此,您需要实际添加 4 个空格,而不是您定义的 3 个空格。
import math
def get_size(data):
count=len(data)
sqroot=math.sqrt(count)
n=math.ceil(sqroot)
return n
def draw_row(data_list):
list_to_join=[]
for data in data_list:
if len(data)==0:
list_to_join.append(' ')
elif len(data)==1:
list_to_join.append(f' {data} ')
elif len(data)==2:
list_to_join.append(f' {data} ')
out= '│'.join(list_to_join)
return f'│{out}│'
def draw_grid(n):
top='┌'+'───┬'*(n-1)+'───┐'
number=n
print(top)
while number>0:
if number!=1:
print('│'+' x │'*n)
print("├" + "───┼" * (n - 1) + "───┤")
elif number==1:
print('│'+' x │'*n)
number=number-1
bottom='└'+'───┴'*(n-1)+'───┘'
print(bottom)#├
def milestone_1(tiles):
grid_tiles=tiles.split(',')
grid_size=get_size(grid_tiles)
print('┌───'+'┬───'*(grid_size-1)+'┐')
for number in range(grid_size):
row = grid_tiles[number*grid_size:(number+1)*grid_size]
row_string= ''
for tile in row:
if tile=='':
tile+=' ' #Add an additional space
row_string+='│{}'.format(tile)
elif len(tile)==1:
tile+=' '
row_string+='│ {}'.format(tile)
else:
tile+=' '
row_string+='│{}'.format(tile)
print(row_string + '│')
if number< grid_size-1:
print('├───' + '┼───'*(grid_size-1) + '┤')
print('└───'+'┴───'*(grid_size-1)+'┘')
milestone_1("1,2,3,4,5,6,7,8,9,10,,12,13,14,11,15")
评论
0赞
Jason Chia
4/24/2023
那会有点困难。从本质上讲,您的网格是用 5 个单位的块绘制的。即:“abcde”将填满您的块。给定大小为 1 的单位,有一个清晰的中心,但对于大小 2 来说它失败了。例如,也许将其扩展到 6 的长度并用“01”、“02”替换您的个位数将是一个快速的解决方案。但这真的有必要吗?
评论