Найти - Пользователи
Полная версия: Почему в моём примере False?
Начало » Python для новичков » Почему в моём примере False?
1
Karalov86
Пишу y пишу r и всё равно продолжается повторения запроса, почему так?

 z = None
while z != "y" or z != "r":
    z = input("пока z или r: ")
    print("T")
py.user.next
Потому что там or, а надо and.

И вообще
 while z not in set('yr'):
Karalov86
py.user.next
Потому что там or, а надо and.И вообще

А почему так?
Вот например такой код печатает - “mars”
 while "y" == "n" or "z" != "x":
    print("mars")
А такой нет
 z = "a"
while "y" == "n" or z != "x":
    print("mars")

OR не работает если сравнения проводятся с переменными?
4kpt_IV
Где и что Вы читали по логическим операторам в python?
old_monty
Karalov86
А такой нет
 z = "a"
while "y" == "n" or z != "x":
    print("mars")
Не нет, а да. Несмотря на бессмысленность проверки “y” == “n”, такой код должен печатать “mars”. Он и печатает.
Karalov86
OR не работает если сравнения проводятся с переменными?
Нет, почему же. Оператор OR работает всегда, и с переменными тоже.
py.user.next
Karalov86
Вот например такой код печатает - “mars”
while "y" == "n" or "z" != "x":
print("mars")

Когда не знаешь, что там получается, выполняй сначала без while в интерпретаторе
  
>>> "y" == "n"
False
>>> 
>>> "z" != "x"
True
>>> 
>>> "y" == "n" or "z" != "x"
True
>>> 
>>> "y" == "n" and "z" != "x"
False
>>>

  
>>> False or True
True
>>>

Оператор while сначала вычисляет своё условие до конца, а потом в завимости от того, что получилось, выполняет своё тело (тело цикла) или не выполняет. Если True получилось, выполнит; если False получилось, не выполнит. После выполнения тела всё повторяется - он снова проводит вычисления в условии и по результату решает, выполнять тело снова или нет.

Вот пример:
  
>>> n = True
>>> while n:
...     print('Hello')
...     n = False
... 
Hello
>>>
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB