Неизвестная синтаксическая ошибка - PullRequest
0 голосов
/ 25 марта 2010

Почему я получаю синтаксическую ошибку при запуске этого кода? Если я удаляю выделенный раздел (возвратные карточки [i]), вместо этого я получаю сообщение об ошибке выделения функции.

Пожалуйста, помогите:)

def dealcards():
    for i in range(len(cards)):
        cards[i] = ''
        for j in range(8):
            cards[i] = cards[i].append(random.randint(0,9)
    return cards[i]


print (dealcards())

Ответы [ 3 ]

5 голосов
/ 25 марта 2010
cards[i] = cards[i].append(random.randint(0,9)
                                              ^

Отсутствует закрывающая скобка. И оператор возврата в следующей строке имеет неправильный отступ.

1 голос
/ 25 марта 2010
  • Ваш SyntaxError из-за незащищенного парня после cards[i] = cards[i].append(random.randint(0,9)
  • Когда вы это уточните, вы обнаружите, что при вызове этой функции вы получите AttributeError. Вы устанавливаете cards[i] как объект str, затем пытаетесь вызвать append для него. Строки не имеют append метод.
  • Вы перебираете индексы и меняете каждое место в cards. Обычно это признак того, что вы делаете что-то не так; в Python более типично просто создать новый список.
    • Когда вам нужны индексы, что очень редко, обычно лучше использовать enumerate.
  • Более подробно о последнем ..... эта функция изменяет глобальное значение cards. Использование функций для изменения глобального состояния - это плохо. Есть две возможности, которые почти наверняка будут лучше:
    • Создайте класс, в котором карты хранятся в виде состояния, с помощью метода deal_cards, который изменяет некоторый атрибут self.cards или любой другой. (Вероятно, путь.)
    • Создайте функцию, которая принимает cards в качестве аргумента и возвращает новый список. (Возможно, это не тот путь, но он улучшает модульность, ремонтопригодность и тестируемость по сравнению с вашей текущей техникой.)
1 голос
/ 25 марта 2010

Отсутствует закрытие:

cards[i] = cards[i].append(random.randint(0,9))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...