Python 如何检查数字是否相等,然后打印最大数字

Python 如何检查数字是否相等,然后打印最大数字,python,int,max,Python,Int,Max,我有一个练习,我需要创建一个函数,打印三个数字中最大的数字,如果有两个相等的数字,它应该返回一条消息 我做到了: def max_number(num1, num2, num3): if len(max(num1, num2, num3)) > 1: return "It's a tie" return max(num1, num2, num3) 但是我发现len不适用于int,我也知道我可以使用elif尝试所有的可能性,但是如果我有更多的参数,那就更难了。有什么办法可

我有一个练习,我需要创建一个函数,打印三个数字中最大的数字,如果有两个相等的数字,它应该返回一条消息

我做到了:

def max_number(num1, num2, num3):
  if len(max(num1, num2, num3)) > 1:
    return "It's  a tie"
  return max(num1, num2, num3)
但是我发现len不适用于int,我也知道我可以使用elif尝试所有的可能性,但是如果我有更多的参数,那就更难了。有什么办法可以解决吗


感谢使用列表理解,然后使用列表的
len

def max_number(*nums):
  m = max(nums)
  if len([i for i in nums if i == m]) > 1:
    return "It's  a tie"
  return max(nums)
一个简单的解决方案:

def max_number(num1, num2, num3):
  m = max(num1, num2, num3)
  return m if [num1, num2, num3].count(m) == 1 else "It's  a tie"

您可以将数字传递给
集合
构造函数,并检查集合的长度是否等于数字的数量:

def max_number(*numbers):
    if len(set(numbers)) == len(numbers):
        return max(numbers)
    return "It's a tie"

您可以使用
heapq.nlargest
获得给定数字中最大的两个,如果它们相等,则视为平局:

from heapq import nlargest
from operator import eq

def max_number(*numbers):
    if eq(*nlargest(numbers, 2)):
        return "It's a tie"
    return max(numbers)
还有一种方法:

def max_number(num1, num2, num3):
    sorted_list = sorted([num1, num2, num3])
    if sorted_list[1] == sorted_list[2]:
        return "It's a tie"
    else:
        return sorted_list[2]

您可以使用
list.count
方法计算最大值的出现次数:

def max_number(*numbers):
    m = max(numbers)
    if numbers.count(m) > 1:
        return "It's a tie"
    return max(numbers)

这行不通,是吗?假设7是最大值,在某一点上,你将7与其自身进行比较。@AaronD.Rodriguez:当你尝试它时,这段代码做了什么?@Prune这是个好问题,我不明白为什么亚伦的尝试不起作用。我一定是第一次输入了什么错误。这一次成功了。@AaronD.Rodriguez是的,这也是我所期待的,谢谢你的支持投票:-)答案似乎是一个假设,我想核实一下。
(2,2,7)
需要什么输出?你得到的答案倾向于假设这是一个“平局”的情况。max(2,2,7)不返回平局…@Prune在那个例子中,我想要的输出是7。当我的最大数等于另一个时,代码应该打印“这是一条领带”。例如,当数字为
(2,7,7)
时,代码应打印为领带。所以列表理解在这种情况下很有效。不要认为它有效。如果2个较小的数字出现平局,则函数在实际出现平局时返回平局max@kerwei谢谢你让我知道。我修改了一点。谢谢你的回答!我想有意思的是,当你对一个列表进行排序时,默认值是升序,所以注意索引很重要。使用默认排序,即升序,你也可以这样做
sorted\u list[-2]==sorted\u list[-1]
。它以相反的顺序分割列表,因此,您不必跟踪索引