小明使用Python編寫了某答題卡中單項(xiàng)選擇題的判分程序,該單選題每題2分。掃描答題卡獲取選項(xiàng)填涂信息,輸入標(biāo)準(zhǔn)答案,程序自動(dòng)判斷并輸出分?jǐn)?shù)。具體方法為:
一個(gè)選項(xiàng)是否被填涂,可以從判斷一個(gè)像素的顏色開始,像素的填涂情況是通過RGB的值來判斷,灰度值低于132的表示該點(diǎn)被填涂;一個(gè)信息點(diǎn)64%的像素被填涂,則認(rèn)為該區(qū)域已填涂,返回值為“1”。區(qū)域未填涂時(shí)返回值為“0”;各選項(xiàng)的編碼為:A→“1000”,B→“0100”,C→“0010”,D→“0001”;輸入標(biāo)準(zhǔn)答案,程序進(jìn)行對比并返回結(jié)果。答題卡相關(guān)信息如下:
(1)某題的標(biāo)準(zhǔn)答案為“C”,該題填涂情況為“0100”,則分?jǐn)?shù)為
0
0
分
(2)實(shí)現(xiàn)上述功能的程序如下,請?jiān)跈M線處填入合適的代碼。
from PIL import Image
#輸入起始點(diǎn)坐標(biāo)(xs,ys),信息點(diǎn)寬度高度(fw,fh),間隔寬度高度(sw,sh),代碼略
num=5#判分個(gè)數(shù)
def bw_judge(R,G,B):#bw_judge用于判斷一個(gè)像素的填涂情況 代碼略
def fill_judge(x,y):#fill_judge用于判斷信息點(diǎn)的填涂情況
count=0
for i in range(x,x+fw+1):
for j in range(y,y+fh+1):
R,G,B=pixels[i,j]
if bw_judge(R,G,B)==True:
count=count+1
if count>=
①:
return True
total_width=fw+sw
total_height=fh+sh
image=Image.jye.ai(“t2.bmp“)
pixels=image.jye.ai( )
number=““
bz=[““]*num
df=0
bzd=input('請輸入標(biāo)準(zhǔn)答案:')
da={“A“:“1000“,“B“:“0100“,“C“:“0010“,“D“:“0001“}
for i in range(len(bzd)):
bz[i]=
②for row in range(num):#分?jǐn)?shù)判定
for col in range(4):
③y=ys+total_height*row
if fill_judge(x,y)==True:
number=number+'1'
else:
number=number+'0'
if number==bz[row]:
df+=2
number=““
print(“得分為:“,df)