Buggy python submission (verdict: Runtime Error):
import numpy as np

input_str  = list(input())
count = 0

if input_str[0] == '?':
    if input_str[1] == 'P':
        input_str[0] == 'D'
    else:
        input_str[0] = 'P'

if input_str[-1] == '?':
    input_str[-1] = 'D'


for i in range(1,len(input_str)-1):
    if input_str[i] == '?':
        if input_str[i-1] == 'P':
            input_str[i] = 'D'
        elif input_str[i+1] == 'P':
            input_str[i] = 'D'
        elif input_str[i+1] == 'D':
            input_str[i] = 'P'
        elif input_str[i+1] == '?':
            if input_str[i-1] == 'P':
                input_str[i] = 'D'
            else:
                input_str[i] = 'P'
        elif input_str[i+1] == 'D':
            input_str[i] = 'D'

for i in range(len(input_str)-1):
    if input_str[i] == 'D':
        count = count + 1
    if input_str[i] == 'P' and input_str[i+1] == 'D':
        count = count + 1
if input_str[-1] == 'D':
    count = count + 1
ans = ''.join(input_str)

print(ans)


Fixed submission:
import numpy as np

input_str  = list(input())
count = 0



if len(input_str) == 1:
    input_str[0] = 'D'
else:
    if input_str[0] == '?':
        if input_str[1] == 'P':
            input_str[0] = 'D'
        else:
            input_str[0] = 'P'

    if input_str[-1] == '?':
        input_str[-1] = 'D'

    for i in range(1,len(input_str)-1):
        if input_str[i] == '?':
            if input_str[i-1] == 'P':
                input_str[i] = 'D'
            elif input_str[i+1] == 'D':
                input_str[i] = 'P'
            elif input_str[i+1] == '?':
                if input_str[i-1] == 'P':
                    input_str[i] = 'D'
                else:
                    input_str[i] = 'P'
            else:
                input_str[i] = 'D'

ans = ''.join(input_str)

print(ans)

Buggy python submission (verdict: Runtime Error):
import numpy as np

input_str  = list(input())
count = 0

if input_str[0] == '?':
    if input_str[1] == 'P':
        input_str[0] == 'D'
    else:
        input_str[0] = 'P'

if input_str[-1] == '?':
    input_str[-1] = 'D'


for i in range(1,len(input_str)-1):
    if input_str[i] == '?':
        if input_str[i-1] == 'P':
            input_str[i] = 'D'
        elif input_str[i+1] == 'P':
            input_str[i] = 'D'
        elif input_str[i+1] == '?':
            if input_str[i-1] == 'P':
                input_str[i] = 'D'
            else:
                input_str[i] = 'P'
        elif input_str[i+1] == 'D':
            input_str[i] = 'D'

for i in range(len(input_str)-1):
    if input_str[i] == 'D':
        count = count + 1
    if input_str[i] == 'P' and input_str[i+1] == 'D':
        count = count + 1
if input_str[-1] == 'D':
    count = count + 1
ans = ''.join(input_str)
print(ans)


Fixed submission:
import numpy as np

input_str  = list(input())
count = 0



if len(input_str) == 1:
    input_str[0] = 'D'
else:
    if input_str[0] == '?':
        if input_str[1] == 'P':
            input_str[0] = 'D'
        else:
            input_str[0] = 'P'

    if input_str[-1] == '?':
        input_str[-1] = 'D'

    for i in range(1,len(input_str)-1):
        if input_str[i] == '?':
            if input_str[i-1] == 'P':
                input_str[i] = 'D'
            elif input_str[i+1] == 'D':
                input_str[i] = 'P'
            elif input_str[i+1] == '?':
                if input_str[i-1] == 'P':
                    input_str[i] = 'D'
                else:
                    input_str[i] = 'P'
            else:
                input_str[i] = 'D'

ans = ''.join(input_str)

print(ans)