Форум сайта python.su
Всем доброго времени суток,
Только начал изучать Питон по книге Майкла Доусона “Программируем на Python”.
Интересует такой вопрос,можно ли объединить как-то вопросы в Питоне? В группу или как-то ещё? Не могу точно сформулировать вопрос.
Сейчас объясню,что я имею ввиду. Допустим,нужно написать программу- тест. Есть 10 вопросов, ответ на каждый вопрос- либо “Да”, либо “Нет”. Причём “Да” или “Нет” юзер вводит с клавиатуры. Если,допустим, юзер на 1, 2, 4, 7, 10 вопросы отвечает “Да”,а на 3, 5, 6, 8, 10 отвечает “Нет” то выводится один ответ, если на 1, 3, 5, 7, 9 отвечает “Нет”, а на 2, 4, 6, 8, 10 отвечает “Да”, то выводится другой ответ,и т.д.
Пускай переменная с вопросом будет называться “q”. Первый вопрос - q1, второй - q2 и т.д. А можно ли как-то сделать так,чтоб,допустим, выглядело как-то так:
q1 = input("Вы курите? Да/Нет: ") . . . if q1, q2, q3, q4, q5 = 'Да' and q6, q7, q8, q9, q10 = 'Нет': print("Ответ") elif q2, q4, q7, q8, q9 = 'Да' and q1, q3, q5, q6, q10 = 'Нет': print("Другой ответ")
if q1 = 'y' and q2 = 'y' and q3 = 'y' and q4 = 'y' and q5 = 'y' and q6 = 'y' and q7 = 'y' and q8 = 'n' and q9 = 'n' and q10 = 'y': print("") elif q1 = 'y' and q2 = 'y' and q3 = 'y' and q4 = 'y' and q5 = 'y' and q6 = 'n' and q7 = 'y' and q8 = 'n' and q9 = 'n' and q10 = 'y': print("") elif q1 = 'y' and q2 = 'n' and q3 = 'y' and q4 = 'y' and q5 = 'n' and q6 = 'y' and q7 = 'y' and q8 = 'y' and q9 = 'n' and q10 = 'y': print("") elif q1 = 'y' and q2 = 'y' and q3 = 'n' and q4 = 'n' and q5 = 'y' and q6 = 'y' and q7 = 'y' and q8 = 'y' and q9 = 'y' and q10 = 'y': print("") . . .
Отредактировано Oxidous (Окт. 16, 2015 08:31:48)
Офлайн
Вместо да/нет надо использовать True/False, делать из них список, а потом списки сравнивать.
>>> res = [True, False, True, True] >>> >>> v1 = [True, False, True, False] >>> v2 = [False, True, True, False] >>> v3 = [True, False, True, True] >>> >>> if res == v1: ... print('first set') ... elif res == v2: ... print('second set') ... elif res == v3: ... print('third set') ... third set >>>
>>> res = 'ynyy' >>> >>> v1 = 'ynyn' >>> v2 = 'nyyn' >>> v3 = 'ynyy' >>> >>> if res == v1: ... print('first set') ... elif res == v2: ... print('second set') ... elif res == v3: ... print('third set') ... third set >>>
Отредактировано py.user.next (Окт. 16, 2015 10:37:51)
Офлайн
Обратите внимание на all() и any().
all() - истинно, если истинно для всех элементов.
any() - истинно, если истинно хотя бы для одного элемента.
>>> all([True, True])
True
>>> all([False, True])
False
>>> any([True, True])
True
>>> any([False, True])
True
>>> any([False, False])
False
Офлайн
Oxidousо! коллега! я начал продираться сквозь Лутца
Только начал изучать Питон по книге Майкла Доусона “Программируем на Python”.
# Зафиксируем ответы (для примера взял только три вопроса) в двоичном виде L = [] Q = {0: 'Вопрос 1? Да/Нет? ', 1: 'Вопрос 2? Да/Нет? ', 2: 'Вопрос 3? Да/Нет? '} R = {0: 'Ответ 1', 1: 'Ответ 2', 2: 'Ответ 3', 3: 'Ответ 4', 4: 'Ответ 5', 5: 'Ответ 6', 6: 'Ответ 7'} # С помощью этого for забираем из Q по порядку вопросы, и в зависимости от ответа "Да", "Нет" записывается в L или '1' или '0' for i in range(3): Answ = input(Q[i]) if Answ == 'Да': q = '1' if Answ == 'Нет': q = '0' L.insert(i, q) # Соединяем L в строку S, а строку переводим из "двоичной" в десятиричное I, это пример из Лутца S = ''.join(L) I = 0 while S != '': I = I * 2 + (ord(S[0]) - ord('0')) S = S[1:] # Забираем из R нужный ответ print(R[I])
Офлайн