如何识别随机选择的变量是否在列表中?Python 3
的例子:
WarriorList = ['Achilles', 'Sun Wukong']
GuardianList = ['Ares', 'Ymir']
HunterList = ['Apollo', Artemis']
MageList = ['Anubis', 'ra']
Tank = ()
def TankPick():
Tank = (random.choice(WarriorList))
print (Tank)
def BalancePick():
if (Tank) in WarriorList:
print ('yes')
print (random.choice(Magelist))
else:
print ('no')
print (random.choice(Hunterlist))
预期结果:
'Sun Wukong'
'yes'
'ra'
或
'Ymir'
'no'
'Artemis'
如何识别随机选择的变量是否在列表中?Python 3
简单:x in y
,其中x
是要检查的元素,y
是值的可迭代对象。
Tank
变量,它们不会像您认为的那样工作。这些变量只存在于定义它们的函数范围内。函数结束后,相应的Tank
变量将被销毁。同时,在函数外部(在"全局作用域"中)声明的变量只被一次设置为空元组,然后永远不会更改,因为其他Tank
变量被限制在各自的函数作用域中。如果绝对需要,应该在函数中将它们声明为global
——或者更好的做法是,正确地将它们用作函数参数和返回值。
我不完全明白你要做的最终产品是什么,但我还是尽力了!
import random
WarriorList = ['Achilles', 'Sun Wukong']
GuardianList = ['Ares', 'Ymir']
HunterList = ['Apollo', 'Artemis']
MageList = ['Anubis', 'ra']
class Container:
def __init__(self):
self.Tank = ()
def TankPick(self):
# Grabs a random name from all of the lists included
self.Tank = (random.choice(WarriorList + GuardianList + HunterList + MageList))
print (self.Tank)
def BalancePick(self):
if self.Tank in WarriorList:
print ("yesn" + random.choice(MageList))
# n is new line
else:
print ("non" + random.choice(HunterList))
cr = Container()
# Runs TankPick inside of Container
cr.TankPick()
# Runs BalancePick inside of Container after TankPick
cr.BalancePick()