2016-10-27 6 views
0

Я успешно создал систему паролей python, но пароль может быть только из числа, а не из букв. Вот кодировка позади него:Как создать простую систему паролей в python?

password = str(input("Please enter password to continue: ")) 
    if password == 'dog': 
     print ("Welcome") 
    else: 
     print ("WRONG PASSWORD") 

Это не работает, когда пароль является целым числом.

Редактировать: Извините, что поместили неправильный код, новый на этом сайте. я теперь добавил кавычки, чтобы «собака», но теперь он дает эту ошибку в терминале

Please enter password to continue: dog 
Traceback (most recent call last): 
    File "pass.py", line 1, in <module> 
    password = str(input("Please enter password to continue: ")) 
    File "<string>", line 1, in <module> 
NameError: name 'dog' is not defined 

Final редактирования:. Фиксированный, изменив ул (вход на ул (raw_input Это потому, что я использую терминал, который использует питона 2. кто-нибудь знает, как сделать терминал сделать Python 3 вместо 2?

+2

Вы ищете 'password == '123''? –

+1

Просьба показать код, который не работает, а не код, который работает. – cdarke

+1

if password == "dog" –

ответ

0

«Типы» являются ключ здесь.

вы произнесение входа вы получаете от пользователя (который является String) в int - Целочисленность:

3 == '3' 

Это неверно! Строка никогда не может быть равна Integer.

Я бы посоветовал не бросать его на int, держите его str, и он должен работать нормально.

+0

Если правильный пароль - номер 123, это работает, но если я его сменил, например, на «собаку», он дал бы эту ошибку: Пожалуйста, введите пароль для продолжения: dog Traceback (последний последний звонок): Файл " проходить.ру», строка 1, в пароль = ул (вход („Пожалуйста, введите пароль для продолжения: „)) Файл“ “, строка 1, в NameError: имя„собака“не определена – toscanOs

2

Вы пытаетесь передать string тип integer, который не будет работать. Вы можете сравнить строку с int!

Строки в python нуждаются в речевых меток ("STRING") вокруг них. Если речевых меток нет, python будет считать, что это целое число или float.

Ваш правильный код должен быть:

password = str(input("Please enter password to continue: ")) 
if password == "dog": 
    print ("Welcome") 
else: 
    print ("WRONG PASSWORD") 

EDIT: также, что вы используете Python 2 (потому что вы используете терминал). Функция input в Python 2 пытается получить вход как выражение python, а не как строку. Попробуйте вместо этого использовать raw_input, если вы используете Python 2. Это приведет к вводу в виде строки.

Строковые речевые метки по-прежнему применяются. Ваш код выглядит так:

password = str(raw_input("Please enter password to continue: ")) 
if password == "dog": 
    print ("Welcome") 
else: 
    print ("WRONG PASSWORD") 
+0

я добавил кавычки но он все еще дает ошибку в терминале, я просто добавил ошибку в вопрос. – toscanOs

+0

Вы используете python 3? Он работает на https://repl.it/languages/python3 – MagikCow

+0

@toscanOs См. мое редактирование. – MagikCow

Смежные вопросы