Подтвердить что ты не робот

Как проверить переменную на 2 возможных значения python

У меня есть переменная s, которая содержит строку с одной буквой

s = 'a'

В зависимости от значения этой переменной я хочу вернуть разные вещи. Пока что я делаю что-то вроде этого:

if s == 'a' or s == 'b':
   return 1
elif s == 'c' or s == 'd':
   return 2
else: 
   return 3

Есть ли лучший способ написать это? более путинский путь? Или это наиболее эффективно?

Раньше у меня неправильно было что-то вроде этого:

if s == 'a' or 'b':
   ...

Очевидно, что это не работает, и я был довольно глупым.

Я знаю условное назначение и пробовал это:

return 1 if s == 'a' or s == 'b' ...

Я думаю, мой вопрос в частности заключается в том, есть ли способ сравнить переменную с двумя значениями, не набирая "что-то" что-то ИЛИ что-то == что-то "

4b9b3361

Ответ 1

if s in ('a', 'b'):
    return 1
elif s in ('c', 'd'):
    return 2
else:
    return 3

Ответ 2

 d = {'a':1, 'b':1, 'c':2, 'd':2}
 return d.get(s, 3)

Ответ 3

Если вы возвращаете только фиксированные значения, лучше всего подходит словарь.

Ответ 4

if s in 'ab':
    return 1
elif s in 'cd':
    return 2
else:
    return 3

Ответ 5

Возможно, немного больше самодокументируется, используя if else:

d = {'a':1, 'b':1, 'c':2, 'd':2} ## good choice is to replace case with dict when possible
return d[s] if s in d else 3

Также можно реализовать популярный первый ответ, если else:

  return (1 if s in ('a', 'b') else (2 if s in ('c','d') else 3))

Ответ 6

return 1 if (x in 'ab') else 2 if (x in 'cd') else 3