按升序打印3个随机数

时间:2019-04-27 06:44:34

标签: python python-3.x

一段时间以来,我一直在努力解决此问题,并且想知道如何做到这一点。

  1. 使用random.randrange()函数生成-20至20(包括两个端点)之间的3个偶数整数。

  2. 确定使用min()函数生成的最小随机数,以及使用max()函数生成的最大随机数。通过将3个数字相加,然后从合计值中减去最小数字和最大数字,来确定中间数字。

  3. 按升序打印3个随机数

我了解如何生成随机数,但不了解如何使它们按升序排列并使中间数保持在20以下。不允许使用“ if”等条件语句。

下面是我所做的

import random


number1 = random.randrange(-20, 20, 2)
number2 = random.randrange(-20,  20, 2)
number3 = random.randrange(-20,  20, 2)

smallest = min(number1, number2)
largest = max(number1, number3)
total = number1 + number2 + number3 - smallest - largest

print("Random numbers in ascending order:", smallest, abs(total), (largest))

输出应类似于:升序随机数:-6 10 20

数字可以是任意,偶数和升序。

2 个答案:

答案 0 :(得分:2)

print('Random numbers in ascending order:', end='')
print(sorted([number1, number2, number3]))

答案 1 :(得分:1)

您应该对所有3个数字(而不只是其中2个)执行minmax。您也不需要在abs上调用total函数:

import random

number1 = random.randrange(-20, 20, 2)
number2 = random.randrange(-20, 20, 2)
number3 = random.randrange(-20, 20, 2)

smallest = min(number1, number2, number3)
largest = max(number1, number2, number3)
total = number1 + number2 + number3 - smallest - largest
print("Random numbers in random order:", number1, number2, number3)
print("Random numbers in ascending order:", smallest, total, largest)

您也可以使用列表来代替3个带有重复代码的类似变量:

import random

numbers = [random.randrange(-20, 20, 2) for _ in range(3)]
smallest = min(numbers)
largest = max(numbers)
total = sum(numbers) - smallest - largest
print("Random numbers in random order:", *numbers)
print("Random numbers in ascending order:", smallest, total, largest)