Оператор match/case в Python не позволяет использовать элемент списка в качестве случаяPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Оператор match/case в Python не позволяет использовать элемент списка в качестве случая

Сообщение Anonymous »

У меня есть программа, зависящая от операционной системы, и я хотел использовать оператор и функцию match/case для сопоставления ввода ключа с соответствующим значением. У меня есть «значения» для каждой ОС, хранящиеся в разных кортежах, и я надеялся использовать их в качестве случаев, выполнив что-то вроде этого (но в классе):

Код: Выделить всё

import os
import CONTROLS # File with ASCII values

# UP DOWN RIGHT LEFT
if os.name == "posix":
CONTROL_CODES = range(65, 69)
else:
CONTROL_CODES = (72, 80, 77, 75)

pressed = None
def _input_control_codes(char):
global pressed
match char:
case CONTROL_CODES[0]: # UP
pressed = CONTROLS.UP
return
case CONTROL_CODES[1]: # DOWN
pressed = CONTROLS.DOWN
return
case CONTROL_CODES[2]: # RIGHT
pressed = CONTROLS.RIGHT
return
case CONTROL_CODES[3]: # LEFT
pressed = CONTROLS.LEFT
return

_input_control_codes(65) # example
print(pressed)
Приведенное выше сообщение об ошибке:

Код: Выделить всё

File "~/main.py", line 14
case CONTROL_CODES[0]: # UP
^
SyntaxError: invalid syntax

Мне интересно, есть ли способ сделать это без использования оператора if или написания двух операторов match/case вручную?

Подробнее здесь: https://stackoverflow.com/questions/790 ... s-the-case
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»