2013-09-12 3 views
0

Эта функция, что я написал так:Возвращаясь Кортеж в функции Python

def simulate_turn(num_rolls, score, opponent_score): 
    """This function takes in two scores and a number of die rolls and returns 
    what the two scores would be if num_rolls many dice were rolled. This takes 
    into account the swine swap, free bacon, and hog-wild.""" 
    x = score 
    y = opponent_score 
    x += take_turn(num_rolls,opponent_score,select_dice(score,opponent_score)) 
    if ifwillswap(x,y): 
     swap(x,y) 
    return x,y 

При запуске в интерактивном питона оболочки (функция исходит из .py файла), он возвращается в Int объект вместо кортеж! Что я делаю не так? Я пытаюсь заставить его превратить пару значений, а не один объект int.

+1

Что делает 'swap'? – kojiro

+1

предоставит ваш IDLE-транскрипт, чтобы мы могли точно видеть, что происходит – Claudiu

+3

Я просто издевался над этой функцией, заменяя 'take_turn' и другие неопределенные вещи на' lambda * a: 1'. Он возвращает кортеж. (Показанная функция не возвращает ничего, кроме кортежа. Этот оператор 'return' возвращает кортеж.) – kojiro

ответ

0

Вы уже вернули пару значений. Даже если вы как-то сломал x и y где-то по пути, и что-то нелепое, как это:

def example(): 
    return None, None 
a = example() 

a будет по-прежнему содержать ссылку на кортеж (None, None) после выполнения этой функции. Итак, вы возвращаете кортеж из двух «somethings», единственный вопрос в том, что это за «somethings» и как вы их храните. У вас нет причин думать, что ваша функция возвращает int, потому что это не так. Независимо от того, с помощью синтаксиса, который вы использовали, ваша функция возвращает кортеж двух типов. Вы могли бы просто сделать return x,, и это вернет кортеж из одного предмета. Запятая не позволяет вам возвращать только int.

0

Мое предположение заключается в том, что ваша функция swap(), возможно, устанавливает вашу переменную y равную None и что вы, возможно, неправильно интерпретируете возвращаемые значения. Как говорили другие, я не вижу, как вы можете видеть что-то, кроме кортежа, как возвращение.

Смежные вопросы