Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Что это делает?

Кирилл . Знаток (338), на голосовании 4 недели назад
Питон мне это скинул друг и говорит переписывай
Голосование за лучший ответ
Ахмат Лайпанов Мастер (1065) 1 месяц назад
фигня какая то, ниче страшного, калькулятор с паролем. Кст у него ошибки в коде
Лайт Ягами Искусственный Интеллект (310555) 1 месяц назад
Код, за который надо пинать, потому что использовать eval - самоубийство
СергейПросветленный (42706) 1 месяц назад
Никакого самоубийства в этом нет. Абсолютно нормальная функция, если у программиста есть хоть капелька мозга и он не подставляет в неё данные, пришедшие по сети.
Лайт Ягами Искусственный Интеллект (310555) Сергей, только есть юзер знает, что туда нужно именно фрагмент скрипта подставлять. Калькулятор пихать - плохая идея, для учебного проекта может и подойдёт, но в реальности - давать юзеру возможность сломать программу изнутри средствами самой программы - очень плохая идея.
Сергей Просветленный (42706) 1 месяц назад
 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")))
Похожие вопросы