while not (z:=input("Введите пароль:\n")).isdigit() or int(z) != 1111:
print("Пароль не верен, повторите попытку")
print("Пароль верен. Вы получили доступ к калькулятору.")
print(eval(input("Введите нужное вам выражение:\n")))
Запрашиваем ввод пароля, сразу присваиваем введённое переменной через моржовый оператор и проверяем: цифры ли это и равны ли они 1111 после преобразования к целочисленному типу из строки. Если нет, уходим на следующую итерацию цикла. Если да, то выходит из цикла по условию, запрос выражения, исполнение его через eval и вывод через print. \n — символ перевода строки.
Приводить к целочисленному типу не нужно в данном случае, можно сравнить просто как строки:
while input("Введите пароль:\n")) != "1111":
print("Пароль не верен, повторите попытку")
print("Пароль верен. Вы получили доступ к калькулятору.")
print(eval(input("Введите нужное вам выражение:\n")))