只学习Python几个月,所以请耐心等待......
创建一个非常简单的游戏作为Python教程的一部分,其中用户基本上从一个类跳到另一个类,所有这些都需要用户输入并打印出各种语句。
例如,给定以下类:
class ChipCar(Scene):
def enter(self):
print "What's up? Get in the Bran Muffin car!"
action = raw_input("> ")
if action == "shut up chip":
print "Screw you!"
print action
return next_scene('Your_death')
#return 'Death'
elif action == "hi chip":
print "What's up loser?!?! Let's go to O&A..."
return next_scene('Chip_in_studio')
else:
print "what's wrong with you? Let's go to my mother's house, I think Lamar's there..."
return 'Chip_mom_house'
假设我希望能够检查第一个if语句的多个正确选项,例如,除了"shut up chip"
说"go away dude"
或"screw you"
或"Java sucks"
之外 - 什么是最好的方法?
答案 0 :(得分:2)
如果您的所有测试都是相同的,那么您可以在集合上使用in
运算符,它将检查您正在测试的值是否存在。我建议使用set
,因为它的成员资格测试速度非常快,但使用list
或tuple
可能会在Python 2中获得更好的性能(我认为它仅适用于Python的最新版本) 3常量集文字存储为常量,而不是每次函数运行时都重新创建):
if action in {"shut up chip", "go away dude", "screw you", "Java sucks"}:
# ...
如果您的非相等性测试不是那么相关,那么您可以使用any
或all
函数将它们链接起来,就好像使用or
或{{ 1}}。例如,这段代码将测试与上面相同的字符串,但是允许任意大小写,并且在我们正在检查的位(包括子字符串搜索)旁边包含额外的文本:
and
这是在if any(phrase in action.lower() for phrase in ("shut up chip", "go away dude",
"screw you", "java sucks")):
# ...
调用中使用生成器表达式,这是Python中非常常见的习惯用法(但可能比你学到的更先进)。
答案 1 :(得分:1)
您可以执行以下操作:
def enter(self):
print "What's up? Get in the Bran Muffin car!"
action = raw_input("> ")
if(action == "shut up chip" or action == "go away dude" or action == "screw you"):
print "Screw you!"
print action
return next_scene('Your_death')
#return 'Death'
elif action == "hi chip":
print "What's up loser?!?! Let's go to O&A..."
return next_scene('Chip_in_studio')
else:
print "what's wrong with you? Let's go to my mother's house, I think Lamar's there..."
return 'Chip_mom_house'
我们在这个条件语句中使用or
的方式是从左到右在布尔上下文中计算值,就像使用and
一样。如果任何值为true,则or
会立即返回该值。您可以考虑在括号内打包所有不同的用户响应选项,其中我们正在评估action
的每个实例是否都有您的一个用户输入值。
答案 2 :(得分:0)
您可以在字符串元组上使用in
运算符。如果匹配,则返回True
。
class ChipCar(Scene):
def enter(self):
print "What's up? Get in the Bran Muffin car!"
action = raw_input("> ")
if action in ("shut up chip", "go away dude", "screw you"):
print "Screw you!"
print action
return next_scene('Your_death')
#return 'Death'
elif action == "hi chip":
print "What's up loser?!?! Let's go to O&A..."
return next_scene('Chip_in_studio')
else:
print "what's wrong with you? Let's go to my mother's house, I think Lamar's there..."
return 'Chip_mom_house'