Питон: небольшая ошибка цикла с условием продолжения

Я плохо знаком с питоном и программирующий в целом, и я столкнулся с этой проблемой, возясь с простым циклом с условием продолжения. Петля берет вход, чтобы оценить два возможных пароля:

    print('Enter password')
    passEntry = input()

    while passEntry !='juice' or 'juice2':
      print('Access Denied')
      passEntry = input()
      print(passEntry)

    print('Access Granted')

Это, кажется, не принимает сока или juice2 как действительных.

Также просто приняв один пароль как:

    while passEntry != 'juice' :

не будет работать, в то время как:

    while passEntry !='juice' :

хорошо работает. Я, может казаться, не нахожу причину этих проблем (Единственная разница между последними двумя - пространство после =). Любая помощь ценится.

0
Это может не рассуждать ошибки, которую я предполагаю!
добавлено автор Grijesh Chauhan, источник

6 ответы

Во-первых, необходимо использовать Пайтона getpass модуль, чтобы получить пароль портативно. Например:

import getpass
passEntry = getpass.getpass("Enter password")

Затем код вы написали, чтобы охранять в то время как петля:

while passEntry != 'juice' or 'juice2':

интерпретируется переводчиком Пайтона как некоторое время петля с выражением охраны

(passEntry != 'juice') or 'juice2'

Это всегда верно, потому что независимо от того, равняется ли passEntry "соку" или нет, "juice2" рассмотрят как верный, когда интерпретируется как булево.

У Питона лучший способ проверить членство состоит в том, чтобы использовать in operator, который работает на множество типов данных, таких как список или набор или кортеж. Например, список:

while passEntry not in ['juice', 'juice2']:
7
добавлено

можно использовать

while passEntry not in ['juice' ,'juice2']:
3
добавлено

passEntry !='juice' or 'juice2' means (pass != 'juice') or ('juice2'). "juice2" is a nonempty string, so it is always true. Thus your condition is always true.

Вы хотите сделать passEntry! = 'сок' и passEntry! = 'juice2' , или более приятно passEntry не в ('сок', 'juice2') .

1
добавлено

Как насчет:

while passEntry !='juice' and passEntry!= 'juice2':

и использование raw_input() вместо вход() ?

input() evaluates the input as if it were Python code.

1
добавлено
Да это было им для первой части, совершил логическую ошибку при использовании или вместо и. Спасибо
добавлено автор baker641, источник
raw_input (), казалось, не работал, однако,
добавлено автор baker641, источник

Ваша ошибка находится в способе, которым вы написали в то время как заявление.

while passEntry !='juice' or 'juice2':

Та линия всегда будет верна, когда прочитано переводчиком питона. И также вместо:

passEntry = input()

Использование:

passEntry = raw_input()

(Если вы не используете Пайтона 3),

вход в Пайтоне 2 evals ваш вход.

Это будет надлежащим кодом:

print('Enter password')
passEntry = raw_input()

while passEntry != 'juice' and passEntry != 'juice2':
    print('Access Denied')
    passEntry = raw_input()
    print(passEntry)

print('Access Granted')
0
добавлено
Хорошо, я управляю python3, таким образом, я предполагаю вот почему raw_input (), дал мне проблемы. Спасибо
добавлено автор baker641, источник

Это работает?

while passEntry !='juice' and passEntry !='juice2':
0
добавлено
Python
Python
7 654 участник(ов)

Уютный чат для профессионалов, занимающихся поиском питоньих мудростей. Как не получить бан: https://t.me/ru_python/577926

Python beginners
Python beginners
4 449 участник(ов)

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Не злоупотребляйте стикерами. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Статистика тут: https://grstats.me/chat/x4qym2k5uvfkr3al6at7

pro.python
pro.python
1 090 участник(ов)

Сообщество разработчиков под Python Создатель: @rodgelius

Rude Python
Rude Python
971 участник(ов)

Python без „девочек”, здесь матерятся и унижают Django. Not gay friendly. Правила: t.me/rudepython/114107 @rudepython | t.me/rudepython

rupython
rupython
509 участник(ов)

Группа создана с целью оперативного получения ответов на возникающие вопросы по разработке на яп python, смежные темы, а также человеческого общения. Приветствую!

Python-programming
Python-programming
266 участник(ов)

Чат группы вконтакте https://vk.com/python_community