Модераторы: Daevaorn
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не понимаю работу "if" и "or" :(, if input("Y/N") == "Y" or "y": 
V
    Опции темы
RM2010
  Дата 5.2.2010, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 29.1.2010

Репутация: -1
Всего: 2



По идее, если пользователь отвечает "Y" или "y", то stb отмечаем как True, в противном случае как False.

Код

if input("Additional 5% discount? ( Y/N )") == "Y" or "y":
    stb = True
else:
    stb = False
    
print(stb)


А в реальности:
Additional 5% discount? ( Y/N )dasjhdafsjkghdfkjsg
True

что не введи, всё равно выдаст True. smile 
PM MAIL   Вверх
Daevaorn
Дата 5.2.2010, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Код

inp = input("Additional 5% discount? ( Y/N )")

if inp == "Y" or inp == "y":
    pass

или
Код


if inp in ("Y", "y"):
    pass

PM MAIL WWW   Вверх
RM2010
Дата 5.2.2010, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 29.1.2010

Репутация: -1
Всего: 2



if inp == "Y" or inp == "y": СПАСИБООО! smile 
PM MAIL   Вверх
kemiisto
Дата 5.2.2010, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Код

if inp.lower() == 'y':
    pass



--------------------
PM MAIL WWW GTalk Jabber   Вверх
kemiisto
Дата 5.2.2010, 16:24 (ссылка)  | (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



А всё почему? Потому, что
Цитата
You can use virtually any expression in a boolean context, and Python will try to determine its truth value.
 smile 

Непустая строка - оценивается как True. А что-то or True всегда True.

Идиотизм это называется. Не будь этой "фичи" мы бы получили ошибку времени исполнения (компиляции в других ЯП, использующих этот вид трансляции). А так - получаем логическую ошибку. А эти ошибки, как известно, отлавливать в разы труднее. Хорошо, когда вот так, 5-6 строчек. А в большом проекте?

И вообще, глупости всё это. Пустой список - False, непустой - True. Десяток символов пожалели?

Код
if len(my_list) == 0:
    pass


Hамеренья очевидны и не надо никаких подводных камней навроде boolean context.


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Daevaorn
Дата 5.2.2010, 21:07 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(kemiisto @  5.2.2010,  17:24 Найти цитируемый пост)
А в большом проекте?

Просто не надо допускать до больших проектов людей, не знающих базовую семантику языка.
PM MAIL WWW   Вверх
Karadul
Дата 6.2.2010, 09:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Только не input, а raw_input.
А то если юзер введет 5, то программа вылетит.
Скрытый текст
питонкапец++

Чето не вываливается. Я нихрена не понимаю!
Код
>>> if 1="Y": pass
  File "<stdin>", line 1
    if 1="Y": pass
        ^
SyntaxError: invalid syntax


Это сообщение отредактировал(а) Karadul - 6.2.2010, 09:43
PM MAIL   Вверх
Daevaorn
Дата 6.2.2010, 09:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(Karadul @  6.2.2010,  10:37 Найти цитируемый пост)
Только не input, а raw_input.

У автора топика новый питон.
Цитата(Karadul @  6.2.2010,  10:37 Найти цитируемый пост)
Чето не вываливается. Я нихрена не понимаю!

Учите питон.
PM MAIL WWW   Вверх
Karadul
Дата 6.2.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата
Учите питон.

Это такой универсальный ответ?
PM MAIL   Вверх
Daevaorn
Дата 6.2.2010, 12:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2155
Регистрация: 29.11.2004
Где: Москва

Репутация: 9
Всего: 70



Цитата(Karadul @  6.2.2010,  12:51 Найти цитируемый пост)
Это такой универсальный ответ? 

Для подобного рода вопросов и утверждений -- да. В этой и соседней ветке вы показываете полное незнание языка начиная от синтаксиса, но при этом пионерское стремление делать какие-то выводы. Поэтому смысла что-то объяснять не вижу. Как освоите хотя бы на начальном уровне язык то welcome -- можно будет обсудить интересующие вопросы.
PM MAIL WWW   Вверх
Karadul
Дата 6.2.2010, 12:09 (ссылка)    | (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Цитата(Daevaorn @ 6.2.2010,  12:06)
Цитата(Karadul @  6.2.2010,  12:51 Найти цитируемый пост)
Это такой универсальный ответ? 

Для подобного рода вопросов и утверждений -- да. В этой и соседней ветке вы показываете полное незнание языка начиная от синтаксиса, но при этом пионерское стремление делать какие-то выводы. Поэтому смысла что-то объяснять не вижу. Как освоите хотя бы на начальном уровне язык то welcome -- можно будет обсудить интересующие вопросы.

Это уже больше похоже на хамство. Можно ссылку на соседнюю ветку?
PM MAIL   Вверх
kemiisto
Дата 6.2.2010, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Дикий Кот. =^.^=
****
Награды: 1



Профиль
Группа: Участник Клуба
Сообщений: 3292
Регистрация: 29.7.2007

Репутация: нет
Всего: 160



Цитата(Daevaorn @  5.2.2010,  22:07 Найти цитируемый пост)
Просто не надо допускать до больших проектов людей, не знающих базовую семантику языка.

 smile А ещё не надо допускать до разработки новых языков программирования магистров математики и CS. smile 

Karadul, такую тему испортил...


--------------------
PM MAIL WWW GTalk Jabber   Вверх
Karadul
Дата 6.2.2010, 13:32 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 378
Регистрация: 18.5.2006

Репутация: нет
Всего: 1



Я? Каким образом?

Все, допер. В консоли питоновской работать просто неудобно.
Daevaorn, а ты всетаки хам ;(

Это сообщение отредактировал(а) Karadul - 6.2.2010, 13:49
PM MAIL   Вверх
RM2010
  Дата 7.2.2010, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 29.1.2010

Репутация: -1
Всего: 2



Karadul, так ведь как Daevaorn сразу ответил ( за что ему еще раз большое спасибо ) , ошибка была в том, что питон не понимает выражение 
if X == "Y" or "y": , а надо ему растолковать if X == "Y" or х == "y": . smile 
PM MAIL   Вверх
_Viper_
Дата 8.2.2010, 16:19 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 87
Регистрация: 8.11.2006

Репутация: 10
Всего: 11



Цитата(RM2010 @  7.2.2010,  12:21 Найти цитируемый пост)
Karadul, так ведь как Daevaorn сразу ответил ( за что ему еще раз большое спасибо ) , ошибка была в том, что питон не понимает выражение if X == "Y" or "y": , а надо ему растолковать if X == "Y" or х == "y": .

Питон понимает это выражение, просто не так как ты  smile. Для решения подобных проблем изучать приоритеты операторов.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Python: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1233 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.