2014-02-03 3 views
0

My Rock Paper Scissors code не работает, и я предполагаю, что это потому, что я неправильно использую возвращаемое значение. Что мне делать?Где именно возвращается значение функции функции python?

EDIT, поэтому я хранил возвращение как этот

def results (x, y): 
if (x == "R" or x == "rock" or x == "r" or x == "Rock" or x == "ROCK") and (y == "S" or y == "s" or y == "Scissors" or y == "SCISSORS" or y == "scissors"): 
    winner = 1 
    return winner 

Но как я получаю «победитель» на печать за пределами функции?

OLD

player1 = input ("Player 1: Please enter either Rock, Paper or Scissors:") 

player2 = input ("Player 2: Please enter either Rock, Paper or Scissors:") 

def results (x, y): 
if (x == "R" or x == "rock" or x == "r" or x == "Rock" or x == "ROCK") and (y == "S" or y == "s" or y == "Scissors" or y == "SCISSORS" or y == "scissors"): 

    return 1 
else: 
    if (x == "rock" or x == "r" or x =="R" or x == "Rock" or x == "ROCK") and (y == "P" or y == "p" or y == "paper" or y == "Paper" or y == "PAPER"): 

     return 2 
    else: 
     if (x == "rock" or x =="R" or x == "r" or x == "Rock" or x == "ROCK") and (y == "rock" or y =="R" or y == "r" or y =="Rock" or y == "ROCK"): 

      return 0 
     else: 
      print ("Sorry, I didn't understand your input") 


results (player1, player2) 

if results == 1: 
    print ("Player 1 wins!") 
else: 
    if results == 2: 
     print("Player 2 wins!") 
    else: 
     if results == 0: 
      print("It was a tie!") 
+1

Вам может быть полезно ознакомиться с руководством по Python функции - в частности, как их называть. Это официальная, есть и другие: http://docs.python.org/2/tutorial/controlflow.html#defining-functions –

+0

Также, пожалуйста, не расширяйте, если так много утверждений. Попробуйте что-то наподобие 'rock_list = [" rock "," R "," r "]' и 'if x in rock_list:' это выглядит лучше, но это только стиль, поэтому вы по-прежнему выбираете его использовать или нет. – Lafexlos

ответ

5

Возвращаемое значение не сохраняется автоматически в любом месте. Вы должны хранить его вручную:

result = results(player1, player2) 

if result == 1: 
    ... 

Если посмотреть на верхней части вашего кода, вы увидите, вы уже сделали правильную вещь с функцией input:

player1 = input ("Player 1: Please enter either Rock, Paper or Scissors:") 

Функции вы определяете вы должны обрабатываться одинаково.


В ответ на редактирование: Создание локальной переменной внутри results не поможет. Код, вызывающий функцию, должен хранить возвращаемое значение. (Люди разработали языки, которые работают так, как вы пытаетесь заставить его работать. Результат - огромная головная боль с несвязанными частями программы, топающими друг над другом данные.)

+0

Как получить локальную возвращаемую переменную универсальной? – plooms

+0

@Keith: см. Расширенный ответ. – user2357112

+0

Спасибо, я получил его победитель = результаты (player1, player2) – plooms

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