Может ли кто-нибудь объяснить это сообщение об ошибке мне?AttributeError: объект 'tuple' не имеет атрибута 'copy'
# make a copy or hand is destroyed by your test
remaining = hand.copy()
Результат:
AttributeError: 'tuple' object has no attribute 'copy'
Я могу это сделать:
remaining = copy.copy(hand)
который возвращает это:
(None, {hand...})
Что скидывает то, что я пытаюсь выполнить, потому что функция возвращается False, когда она ches Нет возвращаемого значения.
Это функция, которая создает руку:
def deal_hand(n):
"""
Returns a random hand containing n lowercase letters.
At least n/3 the letters in the hand should be VOWELS.
Hands are represented as dictionaries. The keys are
letters and the values are the number of times the
particular letter is repeated in that hand.
n: int >= 0
returns: dictionary (string -> int)
"""
hand={}
num_vowels = n/3
for i in range(num_vowels):
x = VOWELS[random.randrange(0,len(VOWELS))]
hand[x] = hand.get(x, 0) + 1
for i in range(num_vowels, n):
x = CONSONANTS[random.randrange(0,len(CONSONANTS))]
hand[x] = hand.get(x, 0) + 1
return hand
EDIT: Я также изменил руку по пути и создал кортеж из него вместо словаря. Благодаря!
Сообщение об ошибке связано с тем, что кортежи не имеют метода 'copy'. Почему вы пытаетесь вызвать 'copy' на кортеже? – BrenBarn
Потому что я хочу запускать тесты под рукой, а не уничтожать его. – Chris
Было бы лучше, если бы у нас было больше контекста для вашей ситуации. Понятно, что вы пытаетесь вызвать copy() на кортеже, что неверно, поскольку кортежи не имеют метода под названием 'copy'. Мы не знаем, почему вы пытаетесь это сделать. –