我正在尝试查找“ rollList”的最大值,而我尝试过的所有方法都无法正常工作。我对编码不是很好,我的老师给我的指示也不太清楚。我还必须将每个玩家的“ rollList”重置为空,我非常困惑。请帮助。
import random class Player: def __init__(self,name ): self.name = name self.dice = [] def __str__(self): return self.name def roll_Dice(self): rollDice = random.randint(1, 6) return rollDice rounds = 1 rollList = [] newplayer = [] newplayer.append(Player("CAT:")) newplayer.append(Player("DOG:")) newplayer.append(Player("LIZARD:")) newplayer.append(Player("FISH:")) for rounds in range(1,4): print("-----------------") print("Round" + str(rounds)) for p in newplayer: print(p) for x in range (4-rounds): rollDice = random.randint(1, 6) rollList.append(rollDice) print(rollList) max.pop(rollList) print(rollList) rollList.clear() len(rollList)
答案 0 :(得分:1)
max.pop(rollList)
行毫无意义。它尝试调用内置pop
函数的max
方法,该方法不存在。
您只需调用max
本身即可获得最大值:
maxRoll = max(rollList)
如果您要删除该卷,则可以(尽管它似乎没有必要,因为您将清除列表):
rollList.remove(maxRoll)
如果要将最大值附加到另一个列表:
anotherList.append(maxRoll)
答案 1 :(得分:0)
您可以使用max()函数找到列表的最大值:
mylist = [1,2,4,5,6,7,-2,3]
max_value = max(mylist)
现在max_value等于7。您可以使用append()方法将此值添加到新列表中:
new_list = []
new_list.append(max_value)
然后new_list将是[7]
答案 2 :(得分:0)
我报告了一些解决您可能遇到的错误的建议:AttributeError: 'builtin_function_or_method' object has no attribute 'pop'
只需将max.pop(rollList)
更改为max(rollList)
。
然后只有一个元素的列表,因为您正在for rounds in range(1,4):
循环内调用方法,不让该列表填充其他元素。您还在每个循环中调用clear
。
此外,for x in range (4-rounds):
不是必需的,它是一个嵌套循环。
您正在打印姓名列表,而没有给每个人分配掷骰子的价值,那么谁是获胜者?
最后,您将roll_Dice()定义为Person的实例方法,那么为什么不使用它呢?
因此,为什么不rollList.append(p.roll_Dice())
代替:
rollDice = random.randint(1, 6)
rollList.append(rollDice)
希望这会有所帮助。