Да, дружище, это не Паскаль
Подумай, с чем ты сравниваешь переменную 'c'? Не с ДА или YES, а с результатом логической операции
or
т.е. твоё ('Да') or ('да') всегда вернёт True
Переменная же 'c' - не пустая, а, значит, тоже True в смысле булевых отношений. Так что у тебя всегда "ДА"
Если переделывать твой Паскаль-код, то это, скорее,
if c == 'Yes' or c == 'yes' or c == 'y' и т.д.
Но лучше писать сразу на Питоне: проверяй полученное значение на вхождение в список. Так проще:
if c in ['Yes', 'yes', 'y', 'Да']:
Но у тебя сплошной повтор одного и того же (плюс я могу ж и "YES" ввести!). Будь проще:
if c.lower() in ['yes', 'y', 'да', 'д']:
Далее - вынеси блок
c = input('Продолжить работу? Д/Н ')
if c == ('Да') or ('да') or ('Yes') or ('yes') or ('y') or ('Y') or ('д') or ('Д'):
continue
elif c == ('Нет') or ('нет') or ('No') or ('no') or ('n') or ('N'):
break
после оператора if. Тогда он будет у тебя написан один раз. Это правильно. Не повторяй себя.
Ну, как-то так...
print('\n')
print('Калькулятор\n\n')
while True:
x = int(input('Введите первое число: '))
y = int(input('Введите второе число: '))
z = input('Введите знак: ')
res = 0
if z == '+':
res = x + y
elif z == '-':
res = x - y
elif z == '*':
res = x * y
elif z == '/':
res = x / y
else:
print('Оператор обязателен и может быть только + или - или * или / ')
continue
print('Ваш результат: ',res)
c = input('Продолжить работу? Д/Н ')
if c.lower() in ['да', 'yes','y', 'д']:
continue
elif c.lower() in ['нет', 'no', 'n', 'н']:
break
Тут можно ещё много чего усовершенствовать, но, надеюсь, главное ты понял :-)