我正在编写一个基于文本的游戏,我要求用户在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”然后循环返回。是否有另一种方法可以让我获得同义词(我尝试将同义词作为列表尝试相同),或者我的语法是不正确的?
答案 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: