This Python program should read a birth year until the number zero is entered.
The program should then print out the average age and how old the youngest and oldest is.
I need help with two things.
- Print "Unreasonable age, please try again" when input year is -N, like "-45"
- Print the result i.e. the arithmetic average, the youngest and oldest only when I exit the loop. That means when I enter 0.
Current output:
Please type in birth year, to stop, enter 0: 1948
Average age is 72.0 years old.
The younges is 72 years old, and the oldest is 72 years old.
Please type in birth year, to stop, enter 0: 1845
Unreasonable age, please try again
Average age is 72.0 years old.
The younges is 72 years old, and the oldest is 72 years old.
Please type in birth year, to stop, enter 0: 1995
Average age is 48.5 years old.
The younges is 25 years old, and the oldest is 72 years old.
Please type in birth year, to stop, enter 0: 2005
Average age is 37.333333333333336 years old.
The younges is 15 years old, and the oldest is 72 years old.
Please type in birth year, to stop, enter 0: 0
Average age is 37.333333333333336 years old.
The youngest is 15 years old, and the oldest is 72 years old.
Expected output that I want:
Please type in birth year, to stop, enter 0.
Year: 1998
Year: 1932
Year: 1887
Fail: Unreasonable age, please try again.
Year: 1987
Year: -77
Fail: Unreasonable age, please try again.
Year: 1963
Year: 0
Average age is 49 years old. The youngest is 21 years old, and the oldest is 87 years old.
Example code:
# set number_years to zero ### Initial value (has not started counting yet)
number_year = 0
# set number_years to zero ### Initial value (has not started counting yet)
sum_year = 0
# set sum_year to zero ### No maximum age yet
max_year = 0
# set max_year to zero ### Well increased minimum value (age) to start with
min_year = 110
# set input_year to minus 1 ### Only as start value for the sake of the loop start!
input_year = -1
# White input_year is not 0:
while input_year != 0:
# print info and store input value to input_year, stop if 0 is entered
input_year = int(input("Please type in birth year, to stop, enter 0: "))
# let age be (2020 - input_year)
age = (2020 - input_year)
# To avoid beauty flaws with the printout "Unreasonable year ..."
# when the final zero is entered, we must check that age is not 2020
# which it is deceptive enough because 2020-0=2020
# if age is less than zero or age is greater than 110 and age is not 2020:
if age < 0 or age > 110 and age != 2020:
# Print "Unreasonable age, please try again"
print("Unreasonable age, please try again")
# else
else:
# if input_year is greater than zero:
if input_year > 0:
# increase number_year with 1
number_year += 1
# let sum_year become sum_year + age
sum_year = sum_year + age
# if age is less than min_year:
if age < min_year:
# set min_year to age ### New minimum age found
min_year = age
# if age is bigger than max_year:
if age > max_year:
# set max_year to age ### New maximum age found
max_year = age
## If the entered number was 0, exit the loop
#if input_year == 0:
# break
# Now just print the arithmetic average, the youngest and oldest
# Print "Average age is ", sum_year / number_year, "year."
print("Average age is ", sum_year / number_year, "years old.")
# Print "The younges is ", min_year, " and the oldest is ", max_year
print("The youngest is", min_year, "years old,", " and the oldest is ", max_year, "years old.")
# Done! :-)