pbm图像文件表示
本关任务:编写一个函数genP1Rect(x, y, w, h),返回一个字符串,这个字符串表示了黑底中间有白色块的图像。其中 x是图像的宽,y是图像的高 w是白色块的宽,h是白色快的高。
相关知识
pbm文件是一种最简单的二值图像文件(即,图像的每个像素的取值,要么是1——对应白;要么是0——对应黑)。最简单的pbm文件遵循这样的规则 1.第一行是P1 2.第二行,是图像的宽和高的十进制数字,中间以空格间隔 3.像素值,以空格间隔,按从左向右、从上到下的顺序,按行排列 4.从#开始一直到本行结束,全都是注释,不影响图像内容
为了完成本关任务,你需要掌握:1.for循环 2.字符串和列表操作 3.函数定义和调用
编程要求
根据提示,在右侧编辑器补充代码 要求不能使用第三方的Python模块
测试说明
平台会对你编写的代码进行测试:
测试输入:7, 5, 5, 3
; 预期输出:
P1\n7 5\n 0 0 0 0 0 0 0\n0 1 1 1 1 1 0\n0 1 1 1 1 1 0\n0 1 1 1 1 1 0\n0 0 0 0 0 0 0
def genP1Rect(x, y, w, h):
'''
根据x,y,w,h值,输出图像文件表示
:x是图像的宽
:y是图像的高
:w是白色块的宽
:h是白色快的高
:return: 图像文件的表示
'''
# 请在此处添加代码 #
# *************begin************#
pbm_string="P1\n"+str(x)+" "+str(y)+ "\n"
for i in range(y):
line=[]
for j in range(x):
if (x-w)//2<= j<(x+w)//2 and (y-h)//2<=i<(y+h)//2:
line.append('1')
else:
line.append('0')
pbm_string+=" ".join(line)+"\n"
return pbm_string.strip()
# **************end*************#