Hopeful_venture
Hopeful_venture

Reputation: 23

Print out 3 random numbers in ascending order

I've been struggling to solve this problem for some time, and was wondering how to do this.

  1. generate 3 even integers between -20 and 20 (both inclusive) using the random.randrange() function.

  2. Determine the smallest random number generated using the min() function and the largest number using the max() function. Determine the middle number by totaling the 3 numbers then subtracting the smallest number and largest number from the total value.

  3. Print out the 3 random numbers in ascending order

I understand how to generate the random numbers, but not how to get them in ascending order and keep the middle number below 20. Were also not allowed to use conditional statements like "if", etc.

Below is what I've done,

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))

Output should be like: Random numbers in ascending order: -6 10 20

The numbers can be any, just even, and ascending order.

Upvotes: 1

Views: 1227

Answers (2)

blhsing
blhsing

Reputation: 106891

You should perform min and max on all 3 numbers, not just 2 of them. You also don't need to call the abs function on 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)

You can also use a list instead of 3 similar variables with repetitive code:

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)

Upvotes: 1

Jay
Jay

Reputation: 132

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

Upvotes: 2

Related Questions