2013-08-08 8 views
0

В настоящее время я делаю MUD или SUD, как мы можем назвать это (Singleplayer) Единственный способ навигации по игре - ввести команды.Как я могу сопоставить ввод в регистр без учета регистра?

def level_01_room_01(): 
    choice = raw_input('>: ') 
    if choice == 'north': 
     level_01_room_02() 

В этом случае, если пользователь вводит на север, с заглавной буквой N, код не будет воспринимать эту команду. Это будет большой беспорядок, если я на самом деле нужно ввести:

def level_01_room_01(): 
    choice = raw_input('>: ') 
    if choice == 'North': 
     level_01_room_02() 
    if choice == 'north': 
     level_01_room_02() 
    if choice == 'NORTH': 
     level_01_room_02() 

Etc.

Есть ли способ, что я могу это исправить, так что игрок может набрать слово именно так, как он или она хочет ?

+1

Обычный метод python для обработки вопросов с множественным выбором - это словарь, а не много тестов if ==. http://stackoverflow.com/questions/594442/choosing-between-different-switch-case-replacements-in-python-dictionary-or-if – theodox

ответ

4

Вы можете использовать

if choice.lower() == 'north': 
    level_01_room_02() 

(см str.lower())

+2

Или, если есть другие вещи, которые нужно сопоставить, рассмотрите возможность использования 'choice = raw_input ('>:') .lower() ', поэтому вам не нужно называть' lower' несколько раз. – Blckknght

5

Всегда lower() пользовательский ввод перед сравнением против ваших известных строк (и всегда в нижнем регистре).

if choice.lower() =='north': 
    ... 
3

Вы можете использовать методы .lower() и .upper() для преобразования строк в соответствующих случаях. практический примера будет lowercasing всех типов пользователей, как так:

def level_01_room_01(): 
choice = raw_input('>: ').lower() 
if choice == 'north': 
    level_01_room_02() 

Поскольку вход всегда строчные, до тех пор, как все ваши варианты кодируется в нижнем регистре ("north" и не "NORTH" или "North") он будет соответствовать правильно с ранее введенным входом.

Смежные вопросы