2014-02-19 4 views
-3

Я создаю простой RPG, и я хочу спросить у пользователя, хочет ли он атаковать или бежать во время битвы. Я хочу, чтобы он мог напечатать что-нибудь, и программа проверила, содержит ли он, что он печатает. например, он набирает «атаку монстра», и я проверяю, набирал ли «атаку». Я хочу, чтобы у меня была возможность задать вопрос, и когда ответ содержит «атаку», что-то делает, или когда ответ содержит «бегство» что-то делать. как бы я это сделал?Python - Как проверить, содержит ли строка слово

+3

Вы еще что-нибудь пробовали? – IanAuld

+1

Вы уверены, что это хороший способ создать свою программу? Я имею в виду, что, если пользователь вводит что-то вроде «Do not attack»? Было бы неинтуитивно, если бы ваша программа атаковала в любом случае. Вместо этого вы должны ограничить возможные ответы на определенный набор. – iCodez

ответ

7

Использования in ключевого слова:

substr in bigstr будет True тогда и только тогда substr в bigstr.

0

В соответствии с этим: Does Python have a string contains substring method?

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

Как и в

if "attack" in playerResponse: Attack() 
+1

в то время как правильно ... Я всегда буду голосовать за ответ, который использует имена переменных, которые теневые встроенные (пожалуйста, не делайте этого) –

+1

Хорошо - все прошло немного быстро :) Я исправлю это сразу! –

0

Я хотел бы создать словарь с ключевыми словами и действиями

scenario_dictionary = {'attack': you_can_put_a_function_here,'flee':flee_function} 


for word in answer.split(): 
    if word.lower() in scenario_dictionary: 
    scenario_dictionary[word.lower()] 
+0

Вы также хотите вызвать функцию – smac89

0

Если вы хотите узнать, есть ли подстрока где-нибудь в строке:

>>> 'attack' in 'attack the monster' 
True 

Если вы действительно хотите, чтобы проверить слова - хотя вы, возможно, потребуется более умный вариант разделения предложения на слова:

>>> 'attack' in 'attack the monster'.split(' ') 
True 

Может быть что-то вроде этого?

>>> 'attack' in [word.strip('.,?!;()') for word in 'attack, with sword'.split(' ')] 
Смежные вопросы