Как найти максимум списка, а затем сохранить максимум в новом списке - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь найти максимум "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)

Ответы [ 3 ]

0 голосов
/ 20 января 2019

Вы можете найти максимум списка, используя функцию 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]

0 голосов
/ 20 января 2019

Я сообщаю о некоторых предложениях по устранению ошибки. Я полагаю, у вас есть: 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): это не обязательно, это вложенный цикл.

Вы печатаете список имен без присваивания каждомуperson значение броска костей, так кто же победитель?

Наконец, вы определили roll_Dice () как метод экземпляра Person, так почему бы не использовать его?Так почему бы не rollList.append(p.roll_Dice()) вместо:

rollDice = random.randint(1, 6)
rollList.append(rollDice)

Надеюсь, это поможет.

0 голосов
/ 20 января 2019

Строка max.pop(rollList) довольно бессмысленна.Он пытается вызвать метод pop встроенной функции max, которая не существует.

Максимум можно получить, просто вызвав max:

maxRoll = max(rollList)

Если вы хотите удалить этот бросок, вы можете (хотя это и не кажется необходимым, поскольку вы будете очищать список):

rollList.remove(maxRoll)

Если вы хотите добавить максимум к другомусписок:

anotherList.append(maxRoll)
...