Функция работает только в оболочке python, но не при вызове другой функции?

#python #list #function #python-3.x

#python #Список #функция #python-3.x

Вопрос:

У меня есть проблема с домашним заданием с одной из моих функций, называемой function 4 . Это его код:

 def getSuit(n):
    suits = []
    if 1 <= n <= 13:
        suits.append("Spades")
        return suits
    if 14 <= n <= 26:
        suits.append("Hearts")
        return suits
    if 27 <= n <= 39:
        suits.append("Clubs")
        return suits
    if 40 <= n <= 52:
        suits.append("Diamonds")
        return suits
  

Теперь функция работает так, как есть, если я вызываю ее в оболочке следующим образом:

 >>>getSuit(51)
>>>["Diamonds"]
  

Тем не менее, я создаю новую функцию, которая устанавливает значение карты, а также вызывает функцию 4 для получения масти карты, но когда я вызываю функцию, она отображает только [«Пики»], независимо от того, какое число выбрано.

Вот код для функции 5:

 def getCard(n):    
n = (n-1) % 13   1
deckValue = []
grabSuit = getSuit(n) # Called Function 4 here. <---
if n == 1:
    deckValue.append("Ace")
    return deckValue   grabSuit
if 2 <= n <= 10:
    deckValue.append(str(n))
    return deckValue   grabSuit
if n == 11:
    deckValue.append("Jack")
    return deckValue   grabSuit
if n == 12:
    deckValue.append("Queen")
    return deckValue   grabSuit
if n == 13:
    deckValue.append("King")
    return deckValue   grabSuit
  

Итак, теперь, когда я вызываю ее в оболочке python, это мой результат:

 >>>getCard(52)
>>> ["King", "Spades"]
  

Тогда как это должно быть:

 >>>getCard(52)
>>>["King", "Diamonds"]
  

Я просто неправильно вызываю переменную функции или мне нужно переписать функцию 4? Кажется, я не могу понять, почему он не отображает другие костюмы, несмотря на то, что он отлично работает в одиночку.

Ответ №1:

В getCart вы меняете n , прежде чем использовать его с getSuit()

 n = (n-1) % 13   1
grabSuit = getSuit(n)
  

порядок изменения

 grabSuit = getSuit(n)
n = (n-1) % 13   1
  

Комментарии:

1. Вау, ха-ха, я не заметил, что я это сделал. Бахх, я чувствую себя идиотом. Спасибо, что заметили это.

2. старый метод: используется print(...) для просмотра значений в переменных и какая часть кода выполняется. В основном это помогает решить проблему.

Ответ №2:

 def getCard(n):
grabSuit = getSuit(n) # Called Function 4 here. <--- Move to this line    
n = (n-1) % 13   1 
deckValue = []