在本练习中,我需要创建一个打印最大数量的三个数字的函数,如果有两个相等的数字,则应返回一条消息。
我做到了:
var currentTime = new Date(),
hours = currentTime.getHours(),
minutes = currentTime.getMinutes();
if (minutes < 10) {
minutes = "0" + minutes;
}
document.write(hours + ":" + minutes)
但是我发现 len 不适用于 int ,而且我也知道我可以使用 elif 尝试所有可能性,但是,如果我有更多参数,那将更加困难。有什么办法可以解决吗?
谢谢
答案 0 :(得分:2)
使用列表理解,然后使用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)
答案 1 :(得分:1)
您可以将数字传递给set
构造函数,并检查集合的长度是否等于数字的数量:
def max_number(*numbers):
if len(set(numbers)) == len(numbers):
return max(numbers)
return "It's a tie"
答案 2 :(得分:0)
一个简单的解决方案:
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"
答案 3 :(得分:0)
您可以使用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)
答案 4 :(得分:0)
另一种方法:
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]
答案 5 :(得分:0)
您可以使用list.count
方法来计算最大值的出现次数:
def max_number(*numbers):
m = max(numbers)
if numbers.count(m) > 1:
return "It's a tie"
return max(numbers)