Reputation: 23
I've been struggling to solve this problem for some time, and was wondering how to do this.
generate 3 even integers between -20 and 20 (both inclusive) using the random.randrange() function.
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.
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
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
Reputation: 132
print('Random numbers in ascending order:', end='')
print(sorted([number1, number2, number3]))
Upvotes: 2