그래서이 문제로 고투 2 일 후 나는 포기했다. 당신은 두 개의 입력을받습니다. 첫 번째는 명제가 포함 된 목록이고 두 번째는 사전입니다.주어진 사전 키를 기반으로 해답을 취하고 답을 반환하는 파이썬에서 문자열 해석기를 만드는 방법은 무엇입니까?
예 :
arg= [<prop1>, "OPERATOR (AND OR)",
[ "NOT" ,["NOT",<prop2>,"OPERATOR"[<prop2>, "OPERATOR", <prop3>]]]
I 문제 못해 이중 재귀를 사용하지 않고 해결 될 수 있음을 베팅하고 :
arg= [<prop1>, "OPERATOR", <prop2>]
dicti= {<prop1>: key1, <prop2394>: key2394,<prop2>:key2}
다음 가능한 입력된다. 이 문제를 해결하기위한 시도입니다. 입력 내용이 "flat"목록 인 목록의 요소로 목록이없는 1D 목록을 의미하는 기본 사례부터 시작했습니다. 프로그램은 부울 값을 반환하지 말고 사전에 주어진 true
또는 false
을 반환해야합니다.
def interpret(arg, keys):
if not arg :
return "false"
elif not arg and not keys:
return "false"
elif not keys and isinstance(arg,list):
return "true"
elif isinstance(arg[0],list):
return interperter(arg[0:],keys)
else:
trueCnr=0
for i in range(len(arg)):
if arg[i] in keys and keys[arg[i]]=="true":
if isinstance (arg[i], list):
if("NOT" in arg):
indx= arg.index("NOT")
keys[arg[indx+1]]= "true" if keys[arg[indx+1]]=="true" else "false"
trueCnr+=1
print(trueCnr)
if trueCnr==len(arg)-1 and "AND" in arg: return "true"
elif trueCnr!= 0 and "OR" in arg: return "true"
else: return "false"
print (interpret(["door_open", "AND", ["NOT","cat_gone"]], {"door_open" : "false", "cat_gone" : "true", "cat_asleep" : "true"}))
내 질문은 여기서부터 어떻게 진행합니까?
명제는 무엇입니까 예고? –
출력을 어떻게 표시 하시겠습니까? 입력을 출력으로 변환하는 규칙은 무엇입니까? –
@HaiVu는 "참"또는 "거짓"으로 부울 True 또는 False가 아닙니다. –