返回两个NoneTypes中的最高者

时间:2014-12-01 17:01:16

标签: python list

我们试图找出如何比较两个非类型的值来找到得分最高的骰子,但每次运行代码时都会显示Typeerror:unorderable类型:Nonetype()> Nonetype()

def compareresult():
    if giveresult(dice) > giveresult(newdice):
        print(giveresult(dice))

    elif giveresult(newdice) > giveresult(dice):
        print(giveresult(newdice))
    return dice, newdice

giveresult是:

def giveresult(tempDice):
    if fiveofakind(tempDice) is True:
        tempScore = int(50)
        print(tempScore)
    if fiveofakind(tempDice) is False:
        tempScore = int(0)
        print(tempScore)

1 个答案:

答案 0 :(得分:0)

您的giveresult()函数不是返回任何内容,因此会返回默认的None。印刷不是一回事;您正在向终端写入文本,而不是返回,并且呼叫者不能使用写入终端的文本。

print()替换为return

def giveResult(tempDice):
    if fiveofakind(tempDice):
        return 10
    else:
        return 0

我也简化了你的功能;没有必要测试is True; if已经测试fiveofakind()的结果是否为真。因为您已经针对fiveofakind()进行了测试,所以您只需使用else来选择其他案例。

接下来,避免每个骰子调用giveResult以上,并再次从您的函数返回结果:

def compareresult():
    dice_result = giveResult(dice)
    newdice_result = giveResult(newdice)
    if dice_result > newdice_result
        return dice_result

    elif newdice_result > dice_result:
        return newdice_result

    return dice, newdice

如果您必须返回更高的结果,请使用max() function

def compareresult():
    dice_result = giveResult(dice)
    newdice_result = giveResult(newdice)
    return max(dice_result, newdice_result)