Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 7, 2017 14:06:01

Karalov86
Зарегистрирован: 2016-06-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в моём примере False?

Пишу y пишу r и всё равно продолжается повторения запроса, почему так?

 z = None
while z != "y" or z != "r":
    z = input("пока z или r: ")
    print("T")

Отредактировано Karalov86 (Янв. 7, 2017 14:32:32)

Офлайн

#2 Янв. 7, 2017 14:56:13

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9993
Репутация: +  857  -
Профиль   Отправить e-mail  

Почему в моём примере False?

Потому что там or, а надо and.

И вообще

 while z not in set('yr'):



Отредактировано py.user.next (Янв. 7, 2017 14:58:33)

Офлайн

#3 Янв. 7, 2017 15:25:02

Karalov86
Зарегистрирован: 2016-06-17
Сообщения: 23
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему в моём примере False?

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 не работает если сравнения проводятся с переменными?

Офлайн

#4 Янв. 7, 2017 15:51:54

4kpt_IV
Зарегистрирован: 2016-01-08
Сообщения: 999
Репутация: +  49  -
Профиль   Отправить e-mail  

Почему в моём примере False?

Где и что Вы читали по логическим операторам в python?

Офлайн

#5 Янв. 7, 2017 16:01:53

old_monty
Зарегистрирован: 2015-09-27
Сообщения: 238
Репутация: +  20  -
Профиль   Отправить e-mail  

Почему в моём примере False?

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

Отредактировано old_monty (Янв. 7, 2017 16:07:19)

Офлайн

#6 Янв. 8, 2017 03:11:16

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9993
Репутация: +  857  -
Профиль   Отправить e-mail  

Почему в моём примере False?

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
>>>



Отредактировано py.user.next (Янв. 8, 2017 03:18:44)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version