画字母 python
Draw letters python
我有作业,我必须这样做:
这个程序的目的是用字符绘制一组矩形(边与轴平行)。
您将收到一系列矩形,每行一个,由左上角和右下角的坐标(X 和 Y)定义。
您应该 "paint" 使用 # 字符的所有矩形。 X和Y坐标分别向右和向下增长。
输入示例:
0 0 2 8
0 7 8 8
10 0 12 8
10 0 18 1
10 7 18 8
20 0 22 8
20 0 28 1
20 7 28 8
输出示例:
### ######### #########
### ######### #########
### ### ###
### ### ###
### ### ###
### ### ###
### ### ###
######### ######### #########
######### ######### #########
我已经做了这个:
import sys
def make_rectangules(first_coordenates, second_coordenates):
for y in range(second_coordenates[1]-first_coordenates[1]+1):
for x in range(second_coordenates[0]-first_coordenates[0]+1):
print('#')
def main():
aux_list = []
for line in sys.stdin:
line = line.strip('\n').split()
line = list(map(int,line))
first_coordenates = (line[0],line[1])
second_coordenates = (line[2],line[3])
make_rectangules(first_coordenates, second_coordenates)
main()
但我没有得到相同的结果。
我做到了:
import sys
def main():
aux_list = [[0, 0, 2, 8],
[0, 7, 8, 8],
[10, 0, 12, 8],
[10, 0, 18, 1],
[10, 7, 18, 8],
[20, 0, 22, 8],
[20, 0, 28, 1],
[20, 7, 28, 8]
]
max_x = 0
max_y = 0
for elem in aux_list:
if elem[2] > max_x:
max_x = elem[2]
if elem[3] > max_y:
max_y = elem[3]
array = [[" " for x in range(max_y+1)] for y in range(max_x+1)]
for elem in aux_list:
for i in range(elem[0], elem[2]+1):
for j in range(elem[1], elem[3]+1):
array[i][j] = "#"
for x in range(max_y+1):
for y in range(max_x+1):
print(array[y][x], end='')
print("")
main()
结果:
>>python draw.py
### ######### #########
### ######### #########
### ### ###
### ### ###
### ### ###
### ### ###
### ### ###
######### ######### #########
######### ######### #########
这不是最简洁的方法,但它可以工作,并且此代码示例可以为您提供帮助。请花点时间理解这段代码,如果您需要一些说明,请问我问题。
代码:
input_data = '''0 0 2 8
0 7 8 8
10 0 12 8
10 0 18 1
10 7 18 8
20 0 22 8
20 0 28 1
20 7 28 8'''
rectangles = [line.split(' ') for line in input_data.splitlines()]
output_list = []
for rect in rectangles:
x1, y1, x2, y2 = [int(coord) for coord in rect]
for i in range(y1, y2 + 1):
prev = output_list[i] if i < len(output_list) else ''
if len(prev) < x2:
prev += ' ' * (x2 - len(prev) + 1)
prev = prev[:x1] + '#' * (x2 - x1 + 1) + prev[x2 + 1:]
if i < len(output_list):
output_list[i] = prev
else:
output_list.append(prev)
output = '\n'.join(output_list)
print(output)
输出:
### ######### #########
### ######### #########
### ### ###
### ### ###
### ### ###
### ### ###
### ### ###
######### ######### #########
######### ######### #########
欢迎随时询问有关代码的任何问题。
我有作业,我必须这样做:
这个程序的目的是用字符绘制一组矩形(边与轴平行)。
您将收到一系列矩形,每行一个,由左上角和右下角的坐标(X 和 Y)定义。
您应该 "paint" 使用 # 字符的所有矩形。 X和Y坐标分别向右和向下增长。
输入示例:
0 0 2 8
0 7 8 8
10 0 12 8
10 0 18 1
10 7 18 8
20 0 22 8
20 0 28 1
20 7 28 8
输出示例:
### ######### #########
### ######### #########
### ### ###
### ### ###
### ### ###
### ### ###
### ### ###
######### ######### #########
######### ######### #########
我已经做了这个:
import sys
def make_rectangules(first_coordenates, second_coordenates):
for y in range(second_coordenates[1]-first_coordenates[1]+1):
for x in range(second_coordenates[0]-first_coordenates[0]+1):
print('#')
def main():
aux_list = []
for line in sys.stdin:
line = line.strip('\n').split()
line = list(map(int,line))
first_coordenates = (line[0],line[1])
second_coordenates = (line[2],line[3])
make_rectangules(first_coordenates, second_coordenates)
main()
但我没有得到相同的结果。
我做到了:
import sys
def main():
aux_list = [[0, 0, 2, 8],
[0, 7, 8, 8],
[10, 0, 12, 8],
[10, 0, 18, 1],
[10, 7, 18, 8],
[20, 0, 22, 8],
[20, 0, 28, 1],
[20, 7, 28, 8]
]
max_x = 0
max_y = 0
for elem in aux_list:
if elem[2] > max_x:
max_x = elem[2]
if elem[3] > max_y:
max_y = elem[3]
array = [[" " for x in range(max_y+1)] for y in range(max_x+1)]
for elem in aux_list:
for i in range(elem[0], elem[2]+1):
for j in range(elem[1], elem[3]+1):
array[i][j] = "#"
for x in range(max_y+1):
for y in range(max_x+1):
print(array[y][x], end='')
print("")
main()
结果:
>>python draw.py
### ######### #########
### ######### #########
### ### ###
### ### ###
### ### ###
### ### ###
### ### ###
######### ######### #########
######### ######### #########
这不是最简洁的方法,但它可以工作,并且此代码示例可以为您提供帮助。请花点时间理解这段代码,如果您需要一些说明,请问我问题。
代码:
input_data = '''0 0 2 8
0 7 8 8
10 0 12 8
10 0 18 1
10 7 18 8
20 0 22 8
20 0 28 1
20 7 28 8'''
rectangles = [line.split(' ') for line in input_data.splitlines()]
output_list = []
for rect in rectangles:
x1, y1, x2, y2 = [int(coord) for coord in rect]
for i in range(y1, y2 + 1):
prev = output_list[i] if i < len(output_list) else ''
if len(prev) < x2:
prev += ' ' * (x2 - len(prev) + 1)
prev = prev[:x1] + '#' * (x2 - x1 + 1) + prev[x2 + 1:]
if i < len(output_list):
output_list[i] = prev
else:
output_list.append(prev)
output = '\n'.join(output_list)
print(output)
输出:
### ######### #########
### ######### #########
### ### ###
### ### ###
### ### ###
### ### ###
### ### ###
######### ######### #########
######### ######### #########
欢迎随时询问有关代码的任何问题。