首页 > 解决方案 > 如果 3 个值不能是不同的值,则查找最大值、最小值和中间值

问题描述

如果所有这三个值都可以是不同的值,那么这是我关于查找最大值、最小值和中间值的代码片段。如果其中一些可以是相同的值怎么办,我怎样才能找到最大值,最小值和中间值?

num1 = int(input("Enter 1. number : "))
num2 = int(input("Enter 2. number : "))
num3 = int(input("Enter 3. number : "))

print("Numbers\n1.number : {}\n2.number : {}\n3.number : {}".format(num1, num2, num3))

def thebiggest(num1, num2, num3):
    if (num1 >= num2) and (num1 >= num3):
        largest_num = num1
    elif (num2 >= num1) and (num2 >= num3):
        largest_num = num2
    else:
        largest_num = num3

    print("The largest number : ", largest_num)

def thesmallest(num1, num2, num3):
    if (num1 <= num2) and (num1 <= num3):
        smallest_num = num1
    elif (num2 <= num1) and (num2 <= num3):
        smallest_num = num2
    else:
        smallest_num = num3
    print("The smallest value : ", smallest_num)


def middle(num1, num2, num3):
    if (num1 <= num2 and num2 <= num3):
        middle_value = num2
    elif (num2 <= num1 and num1<= num3):
        middle_value = num3
    else:    
        middle_value = num1

    print("Middle value : ", middle_value)


thebiggest(num1, num2, num3)
thesmallest(num1, num2, num3)
middle(num1, num2, num3)

标签: pythonfunctionif-statement

解决方案


将数字列在列表中会让您受益匪浅。在这种特殊情况下,您只有 3 个值,您可以为每个值存储一个变量,但想象一下有数百个数字。

如果放入数组中,您可以使用内置方法轻松解决此任务,即,max(list)min(list)。我猜没有内置方法可以找到中值,因此您可以简单地对列表进行排序并获取 index 处的值1

您还可以使用 f 字符串使代码更紧凑和干净。

这是编写代码的一种可能方法:

nums = []

for i in range(3):
    nums.append(int(input(f"Enter {i+1}. number : ")))

print(f"Numbers\n1.number : {nums[0]}\n2.number : {nums[1]}\n3.number : {nums[2]}")

sorted_nums = sorted(nums)

print (f"The largest number : {sorted_nums[2]}")
print (f"The smallest value : {sorted_nums[0]}")
print (f"Middle value : {sorted_nums[1]}")

推荐阅读