这个怎么写成python?

题目:四项工作分别为宣传、收集、撰写、录制。甲乙丙丁4人各做一项。已知:
乙不宣传也不撰写。甲不宣传也不录制。丁不撰写也不录制。丙不录制也不宣传。如果甲不撰写那么丁不宣传。问谁负责收集工作。

请把上述问题写成python。

这个思路有些笨,不过貌似可以计算。不知道还有没有没考虑到的情况,思路就是生成一个4*4的数组,用-1表示不做,1表示做,0是初始值。通过计算每行每列的值考虑各种情况。

import numpy as np
import pandas as pd

work=['宣传','收集','撰写','录制']
person=['甲','乙','丙','丁']
arr = np.zeros((4,4))
data=pd.DataFrame(arr,columns=work,index=person)
conditions_is_True=False
#已知条件初始化
def init():
    data.loc['甲','宣传']=-1
    data.loc['甲','录制']=-1
    data.loc['乙','宣传']=-1
    data.loc['乙','撰写']=-1
    data.loc['丙','录制']=-1
    data.loc['丙','宣传']=-1
    data.loc['丁','撰写']=-1
    data.loc['丁','录制']=-1 
 #计算每行每列,判断各种情况       
def col_row():
    for i in work:
        count=0
        isOne=False
        for j in person:
            #如果不做,计数几次
            if data.loc[j,i]==-1:
                count+=1
            #记下为0的位置
            elif data.loc[j,i]==0:
                temp0=j
            #记下确定做的工作
            elif data.loc[j,i]==1:
                isOne=True
        if count==3:
            data.loc[temp0,i]=1
        elif count==2 and isOne:
            data.loc[temp0,i]=-1
        elif count==4:
            print('条件不成立')
            conditions_is_True=True
            return
      
    for i in person:
        count=0
        isOne=False
        for j in work:
            if data.loc[i,j]==-1:
                count+=1
            elif data.loc[i,j]==0:
                temp0=j
            elif data.loc[i,j]==1:
                isOne=True
        if count==3:
            data.loc[i,temp0]=1
        elif count==2 and isOne:
            data.loc[i,temp0]=-1
        elif count==4:
            print('条件不成立')
            conditions_is_True=True
            return
        
init()
#假设条件成立
data.loc['甲','撰写']=-1
data.loc['丁','宣传']=-1
col_row()
#条件不成立,计算另外一种情况
if not conditions_is_True:
    arr = np.zeros((4,4))
    data=pd.DataFrame(arr,columns=work,index=person)
    init()
    data.loc['甲','撰写']=1
    col_row()

for i in work:    
    print(f"负责{i}的是",data[data[i]==1].index[0])