If / Else语句中Python输入中的单词的同义词

时间:2015-08-29 03:53:46

标签: python

我正在编写一个基于文本的游戏,我要求用户在python中转向不同的方向。我想要设置它,以便可以使用选项的同义词/变体(例如“右”,“右”,或“r”,或“R”),但不希望必须运行在每个if / else语句中。我已经尝试将每个可能的选项变为变量:

nano /etc/resolv.conf
nameserver 192.168.88.2

然后我在输入后输入if / else语句时尝试调用它:

left = "Left" or "left" or "l" or "L"
right = "Right" or "right" or "r" or "R"
forward = "Forward" or "forward" "f" or "F"
axe = "Axe" or "axe" or "a" or "A"
sword = "Sword" or "sword"
slingshot = "Slingshot" or "slingshot"
yes = "Yes" or "yes" or "y" or "Y"
no = "No" or "no" or "n" or "N"

虽然当我运行代码并输入“right”或“forward”时,它会转到else语句并打印“That is not a option”然后循环返回。是否有另一种方法可以让我获得同义词(我尝试将同义词作为列表尝试相同),或者我的语法是不正确的?

1 个答案:

答案 0 :(得分:1)

Python不能像那样工作。当Python执行行 -

left = "Left" or "left" or "l" or "L"

它执行布尔表达式"Left" or "left" or "l" or "L"并将其结果存储在left中,该布尔表达式的结果将为Left,因此left然后指向字符串{ {1}}。它不会延迟布尔表达式的评估。示例显示 -

"Left"

您应该创建一个集合(因为您将一直搜索这些集合,并为>>> left = "Left" or "left" or "l" or "L" >>> left 'Left' left等每个设置提供恒定时间搜索(O(1)))并使用它。示例 -

right

使用left = set(["Left","left","l","L"]) right = set(["Right","right","r","R"]) 运算符 -

使用它
in

if direction in forward: