Форум сайта python.su
0
При вводе пользователем ПРАВИЛЬНОГО порядкового номера (1,2,3,4) блок отрабатывает как надо ссылаясь на условие if attr_choice == “1” or “2” or “3” or “4”:, так же он отрабатывает правильно, если ввести всё что угодно ссылаясь на условие else: wrong_attr_choice_f(), НО если ввести 0, программа опять отрабатывает условие if attr_choice == “1” or “2” or “3” or “4”: и я не могу понять, почему 
объясните плз
print("\nУ вас", points, "нераспределённых очков характеристик.") attr_choice = input("\nВведите порядковый номер характеристики которую хотите изменить ? ") try: if attr_choice == "1" or "2" or "3" or "4": char = attributes[int(attr_choice)-1][1] print("\nУвеличить характеристику", char, " --- +", "\nУменьшить характеристику", char, " --- -", "\nВыйти в преведущее меню --- 0") choice = input() if choice == "+": points -= 1 attributes[int(attr_choice)-1][2] += 1 elif choice == "-": points += 1 attributes[int(attr_choice)-1][2] -= 1 else: wrong_attr_choice_f() except IndexError as err: wrong_attr_choice_f() except ValueError as err: wrong_attr_choice_f()
Отредактировано Tucha (Сен. 12, 2015 11:26:01)
Офлайн
88
TuchaТут сначала вычисляется == а уже затем or. Вам скорее всего другого хотелось.
attr_choice == “1” or “2” or “3” or “4”
attr_choice in "1234"
Офлайн
0
Shaman
Тут сначала вычисляется == а уже затем or. Вам скорее всего другого хотелось.
Напишите
attr_choice in “1234”
Отредактировано Tucha (Сен. 12, 2015 11:53:00)
Офлайн
88
Запустите “0” == “1” or “2” or “3” or “4” в IDLE, а затем еще раз прочитайте написанное мной выше.
Офлайн
568
Tucha
Вообще, глупо работать с числами как со строками. Вам же в любом случае придется проверять, что пользователь ввел число, а не абракадабру
attr_choice = input("\nВведите порядковый номер характеристики которую хотите изменить ? ") attr_choice = int(attr_choice) if 1 <= attr_choice <= 4: .....
Офлайн
0
Вы все, предлагаете мне решения и за это конечно спасибо, но я хотел просто что бы мне объяснили как читается строка c or, and и ==, как человеку взявшему в руки первую книгу по программированию два дня назад (кем я и являюсь).
а, всё.. понял 
видать не проснулся ещё
Отредактировано Tucha (Сен. 12, 2015 12:34:52)
Офлайн
88
TuchaИли это неправильная книга, или Вы забежали вперед. Чему равно “2” or “3” можете сказать?
первую книгу по программированию два дня назад
Отредактировано Shaman (Сен. 12, 2015 12:46:28)
Офлайн
0
Shaman2 или true (если в булевом значение)
Или это непрвавильная книга, или Вы забежали вперед. Чему равно “2” or “3” можете сказать?
Офлайн
88
TuchaА
2 или true (если в булевом значение)
2 == "2"
Офлайн
0
Я могу только предположить, что значение 2 это int а значение “2” это str и они не могут быть равны. Наверное будет false
Офлайн