Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 31, 2023 22:00:19

fucking_vavilon
Зарегистрирован: 2023-01-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывают условия

Здравствуйте! Я только начинаю изучать язык по видеоурокам и по результатам одного урока написал вот это:
user_data = str(input(“Do you remember everything? ”))
if user_data == “Yes” :
print(“Great! You are smart))”)
if user_data == “No” :
print(“Watch video number 5 again”)
if user_data != “Yes” or “No” :
print(“Error”)
Но не могу понять, почему при вводе “Yes” и “No”срабатывает 3 условие и выводиться “Error”.
И еще один вопрос: как прописать в условии не одно значение - (только) “Yes”, а сразу несколько, например, чтобы выполнялось тоже самое условие, но при вводе также “”yes“, ”Y“, ”y", то есть сделать данные фразы аналогичными

Вероятно для этого есть иные функции, но хотелось бы понять, как это сделать с помощью функции if, но если есть другой способ (легче, проще), то какую функцию нужно использовать?

Офлайн

#2 Янв. 31, 2023 22:12:06

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

Не срабатывают условия

vavilon
Но не могу понять, почему
vavilon
И еще один вопрос
 if user_data not in ('Yes', 'No'):
    ...



Отредактировано py.user.next (Янв. 31, 2023 22:12:22)

Офлайн

#3 Фев. 1, 2023 20:38:55

fucking_vavilon
Зарегистрирован: 2023-01-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывают условия

py.user.next
Спасибо! Это работает, при условии двух постоянных: Yes и No. Но я попробовал ввести больше постоянных user_data и все слетает. Подскажите, в чем ошибка?

user_data = str(input(“Do you remember everything? ”))
if user_data == “Yes” and “yes” and “Y” and “y” :
print(“Great! You are smart))”)
if user_data == “No” or “no” or “N” or “n” :
print(“Watch video number 5 again”)
if user_data not in ('Yes', ‘yes’, ‘Y’, ‘y’, ‘No’, ‘no’, ‘N’, ‘n’):
print(“Error”)

При таком варианте и вводе любых других символов выполняется сразу два условия.
Do you remember everything? ghjk
Watch video number 5 again
Error

или даже так
Do you remember everything? Yes
Great! You are smart))
Watch video number 5 again

То есть я пробовал вводить больше постоянных значений и разделять их “and”, “or” и “,”.
Предполагаю, что я делаю какую-то дичь, но хочется разобраться и понять как это устроено

Офлайн

#4 Фев. 1, 2023 21:00:47

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1349
Репутация: +  118  -
Профиль   Отправить e-mail  

Не срабатывают условия

код вставлять между этими тегами для правильного отображения на форуме

[code python]здесь пишется код[/code]

Офлайн

#5 Фев. 1, 2023 21:03:16

fucking_vavilon
Зарегистрирован: 2023-01-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывают условия

Тогда еще раз…
Спасибо! Это работает, при условии двух постоянных: Yes и No. Но я попробовал ввести больше постоянных user_data и все слетает. Подскажите, в чем ошибка?

 user_data = str(input(Do you remember everything? ))
if user_data == Yes and yes and Y and y :
print(Great! You are smart)))
if user_data == No or no or N or n :
print(Watch video number 5 again)
if user_data not in ('Yes', yes, Y, y, No, no, N, n):
print(Error) 

При таком варианте и вводе любых других символов выполняется сразу два условия.
Do you remember everything? ghjk
Watch video number 5 again
Error

или даже так
Do you remember everything? Yes
Great! You are smart))
Watch video number 5 again

То есть я пробовал вводить больше постоянных значений и разделять их “and”, “or” и “,”.
Предполагаю, что я делаю какую-то дичь, но хочется разобраться и понять как это устроено

Офлайн

#6 Фев. 1, 2023 21:39:35

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1349
Репутация: +  118  -
Профиль   Отправить e-mail  

Не срабатывают условия

  
user_data = str(input('Do you remember everything? '))
if user_data in ('Yes', 'yes', 'Y', 'y'):
    print('Great! You are smart))')
elif user_data in ('No', 'no' ,'N' ,'n'):
    print('Watch video number 5 again')
else:
    print('Error')

Офлайн

#7 Фев. 1, 2023 23:42:43

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

Не срабатывают условия

vavilon
Предполагаю, что я делаю какую-то дичь, но хочется разобраться и понять как это устроено
vavilon
  
if user_data == "Yes" and "yes" and "Y" and "y":
    ...
У операций есть приоритет. Когда операции находятсяв одном выражении, сначала выполняются одни операции, а потом уже выполняются другие операции.

Если расставить скобки, чтобы показать приоритет, то получится так
  
if ((((user_data == "Yes") and "yes") and "Y") and "y"):
    ...
Когда без скобок пишешь это, там эти скобки как будто есть невидимые.

Поэтому вот это, что ты подразумевал, надо писать вот так вообще
  
if user_data == "Yes" or user_data == "yes" or user_data == "Y" or user_data == "y":
    ...

Если расставить скобки, чтобы показать приоритет, то получится так
  
if ((((user_data == "Yes") or (user_data == "yes")) or (user_data == "Y")) or (user_data == "y")):
    ...
Сначала вычисляются самые глубокие скобки, потом вычисляются скобки чуть менее глубокие, потом вычисляются скобки на самой поверхности. Изнутри наружу оно идёт постепенно шаг за шагом.

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


tags: operations



Отредактировано py.user.next (Фев. 1, 2023 23:48:52)

Офлайн

#8 Фев. 2, 2023 20:42:03

fucking_vavilon
Зарегистрирован: 2023-01-31
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Не срабатывают условия

py.user.next
Сначала вычисляются самые глубокие скобки, потом вычисляются скобки чуть менее глубокие, потом вычисляются скобки на самой поверхности. Изнутри наружу оно идёт постепенно шаг за шагом.

У операций есть приоритет и есть очерёдность вычисления операндов. То есть операции ещё могут вычисляться слева направо, а могут справа налево. Есть также операции в математике, а есть операции в языках программирования. И они тоже могут быть одинаковыми, а могут не быть одинаковыми, хотя выглядят одинаково. Поэтому при работе с операциями в языке программирования надо сначала документацию по ним прочитать. Для питона она здесь.
Спасибо за текстовое объяснение принципов работы. Этого много где не хватает. Смотря на код, сложно понять принцип его работы, если он (принцип) тебе не известен. Не скажу, что изучение документации мне все объяснило, но я обязательно со временем пойму ее)))

В итоге я написал работающий код (исходя из того, что требовалось), но он оказался слишком громоздким, видимо из-за того, что мне еще не известен принцип работы оператора (или как это называется?) in, как написал xam1816

 user_data = str(input("Do you remember everything? "))
if user_data == "Yes":
    print("Great! You are smart))")
if user_data == "yes":
    print("Great! You are smart))")
if user_data == "Y":
    print("Great! You are smart))")
if user_data == "y":
    print("Great! You are smart))")
if user_data == "No":
    print("Watch video number 5 again")
if user_data == "no":
    print("Watch video number 5 again")
if user_data == "N":
    print("Watch video number 5 again")
if user_data == "n":
    print("Watch video number 5 again")
else:
    print("Error")
Пока я просто радуюсь, что и это работает так, как задумывалось.
И еще раз всем спасибо!

Офлайн

#9 Фев. 3, 2023 01:24:00

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

Не срабатывают условия

fucking_vavilon
не известен принцип работы оператора (или как это называется?) in
in - это операция.

Операция имеет операнды от одного до трёх обычно. Унарная, бинарная, тернарная.

Оператор - это оператор цикла while или оператор условия if.
Инструкция - отдельное действие в операторе.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version