Я относительно новичок в python, поэтому я даже не уверен, правильно ли я подхожу к этому. Но я нигде не нашел хорошего решения.
Чтобы избежать очень уродливого и повторяющегося кода, я хочу зациклить часть elif оператора if.
Это ужасный код, который я хочу исправить:
def codeToChar(code):
chars = "QWERTYUIOPASDFGHJKLZXCVBNMqwertyuiopasdfghjklzxcvbnm"
if code == ord(chars[0]): ##### SUPER UGLY
return chars[0]
elif code == ord(chars[1]):
return chars[1]
elif code == ord(chars[2]):
return chars[2]
elif code == ord(chars[3]):
return chars[3]
elif code == ord(chars[4]):
return chars[4]
elif code == ord(chars[5]):
return chars[5]
..... etc .....
else:
return "wat"
Как видите, индекс увеличивается на единицу, поэтому я подумал, что зацикливание будет очень простым. Однако, когда я попробовал следующее, это не сработало, потому что это должно быть сформулировано как операторы if, elif, elif, else и не так много операторов if.
Моя неудачная попытка:
for x in xrange(0,len(chars)-1):
if code == ord(chars[x]):
return chars[x]
else:
return "wat"
Как бы я зациклился на этом?
Примечание: если это имеет какое-либо значение, я кодирую это с помощью модуля curses, создавая интерфейс клавиатуры для проекта.
Большое спасибо