2014-12-01 1 views
-3

Я сделал простую игру для игры в кости. Вы начинаете с 5 кубиков, и значения 5 кубиков зарабатывают вам счет. Затем вы получаете шанс «повторно прокатить» кости, которые производят разные значения и новый балл. Чтобы выяснить свой самый высокий балл за раунд, я сделал несколько утверждений. Единственная проблема заключается в том, что каждый результат, будь то оценка выше, такая же или нижняя, все равно создает «if a == b». Что мне делать?Python: Если a == b переопределяет < b and a > b

if giveResult(dice) > giveResult(newDice): 
    print("Your first score was higher than your re-rolled dice score...") 
    print("Your highest score this round is: ", giveResult(dice)) 
elif giveResult(dice) == giveResult(newDice): 
    print("Your first score and re-rolled dice score are the same...") 
    print("Your highest score this round is: ", giveResult(dice)) 
elif giveResult(newDice) > giveResult(dice): 
    print("Your re-rolled dice give you a higher score... ") 
    print("Your highest score this round is: ", giveResult(newDice)) 
+5

Почему ты продолжаешь вызова 'giveResult()' каждый раз? –

+0

есть 2 функции giveResult. Один из них составляет партитуру первого набора кубиков (giveResult (кости)), а другой - результат второго набора кубиков (giveResult (newDice)) –

+0

Что делает 'giveResult'? Как создаются 'кости 'и' newDice'? Бьюсь об заклад, они - тот же список, и вы меняете содержимое списка. – Daniel

ответ

1

Справедливо предположить, что == в python выполняет именно то, что он предназначен для выполнения. Если бы была ошибка, она бы была найдена давно. Итак, если python говорит вам, что giveResult(dice) равен giveResult(newDice), это должно быть правдой.

Способ, которым вы можете отлаживать это: не вызов giveResult в инструкции if. Вместо этого вызовите его один раз и сохраните значение. Затем вы можете распечатать значение перед выполнением теста.

Например

r1 = giveResult(dice) 
r2 = giveResult(newDice) 
print("r1:", r1, "r2:", r2) 
if r1 > r2: 
    ... 
elif r1 == r2: 
    ... 
elif r2 > r1: 
    ... 
0

Это почти уверен, что giveResult() возвращает то же значение для dice и newDice. Это может быть потому, что вы забыли оператор return (поэтому функция неявно возвращает None) или по какой-то другой причине - невозможно сказать, не видя исходный код функции.

есть 2 giveResult функции ...

В Python, вы не можете иметь две функции с тем же именем. Если вы попытаетесь определить два, второй будет перезаписывать первый. Это может быть частью вашей проблемы (опять же, невозможно убедиться, не видя исходного кода).

+0

OP использует Python 3 (известный по [предыдущему вопросу] (http://stackoverflow.com/q/27233398)), и если 'None' был возвращен, исключение будет пытаться сравнить объекты NoneType. –

+0

И OP означал, что есть два ** вызова ** для 'giveResult()', я думаю. –

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