Calculating a minimum number input without using sys module

Question:

Write a program in Python that reads a sequence of integer inputs (data) from the user and then prints the following results:

the total of all the inputs
the smallest of the inputs
the largest of the inputs
the number of even inputs
the number of odd inputs
the average of all of the inputs

You do not know how many numbers the user will want to type in, so you must ask her each time if she has another number to add to the sequence.

So far this is my code but I want to know if there’s a way without using the sys module

import sys

# declare a variable largest which has smallest integer value
# -sys.maxsize gives the smallest integer value,you can also use any smallest value 
largest = -sys.maxsize
# declare a variable smallest, that is assigned with maximum integer value
smallest = sys.maxsize
# declare variables total to store the sum of all numbers
total = 0
# option variable is to store the user option  Y or N
option = 'y'
# declare variables to count odd, even and totalCount
evenCount = 0
oddCount = 0
totalCount = 0
print("This program will calculate statistics for your integer data.")

# run the loop when the user enters y or Y
while option == 'y' or option == 'Y':
    # take input of number
    number = int(input("Please type a number: "))
    # add the number to total
    total = total + number
    # increase totalCount
    totalCount = totalCount + 1
    # calculate smallest
    if number < smallest:
        smallest = number
        # calculate largest
    if number > largest:
        largest = number
    # calculate count of even and odd numbers
    if number % 2 == 0:
        evenCount = evenCount + 1
    else:
        oddCount = oddCount + 1
    option = input("Do you have another number to enter? ")

# calculate average
average = total / totalCount
# print the output
print("nThe total of your numbers is:", total)
print("The smallest of your numbers is:", smallest)
print("The largest nof yout numbers is:", largest)
print("The number of even numbers is:", evenCount)
print("The number of odd numbers is:", oddCount)
print("The average of your numbers is:", average)

Asked By: Harry Singh

||

Answers:

Interesting approach, when I have problems like this I use float('inf') or float('-inf'). Can easily be worked into your approach.

Answered By: Stani Petrov

The answer to "can it be done?" when it comes to programming is almost always "yes."

In this case, you can test if you’re on the first loop iteration and set smallest and largest accordingly.

E.g.

option = 'y'
first_loop = True

while option.lower() == 'y':
  x = int(input("Please type a number: "))
  if first_loop:
    smallest = x
    first_loop = False
  elif x < smallest:
    smallest = x
  option = input("Do you have another number to enter? ")

print(f"Smallest number entered is {smallest}")

You might also collect the input numbers into a list.

option = 'y'
inputs = []

while option.lower() == 'y':
  x = int(input("Please type a number: "))
  inputs.append(x)
  option = input("Do you have another number to enter? ")

Now if you have all of the input numbers in inputs, then calculating a minimum and maximum is just min(inputs) and max(inputs).

Answered By: Chris
Categories: questions Tags:
Answers are sorted by their score. The answer accepted by the question owner as the best is marked with
at the top-right corner.