0

This is for PYthon 3.5. I am looking to add hours and minutes format to the list and get it to print out currently it will not do either.

I am looking to get a list of what is input as:

0:00 The temperature is ##
1:00 The temperature is ##

up to 23:00.

Thanks for the help.

HourlyTemperatures = []

def main():

    def GetTemperatures(HourlyTemperatures):
        for hours in range(0,24):
            HourlyTemperatures.append(int(input("Please input a temperature for the hour: " % hours)))
            while HourlyTemperatures[hours] <= -50 or HourlyTemperatures[hours] >= 130:
                print("Please enter a valid Temperature between -50 or 130")
                HourlyTemperatures[hours] = (int(input("Please input a temperature for the hour: ")))

        return HourlyTemperatures

    def ComputeAverageTemp(HourlyThemperatures):
        AverageTemperature = sum(HourlyTemperatures) / len(HourlyTemperatures)
        return AverageTemperature

    def ComputeMaxTemp(HourlyTemperatures):
        MaxTemp = max(HourlyTemperatures)
        return MaxTemp

    def ComputeMinTemp(HourlyTemperatures):
        MinTemp = min(HourlyTemperatures)
        return MinTemp


    CalcTemperature = GetTemperatures(HourlyTemperatures)
    AverageTemperature = ComputeAverageTemp(CalcTemperature)
    MaxTemp = ComputeMaxTemp(CalcTemperature)
    MinTemp = ComputeMinTemp(CalcTemperature)
    CalcDisplayTemperature = DisplayTemperatures(HourlyTemperatures, AverageTemperature)
    print(CalcTemperature)
    print(HourlyTemperatures)
    print(AverageTemperature)
    print(MaxTemp)
    print(MinTemp)
Simeon Visser
  • 118,920
  • 18
  • 185
  • 180
jamesicywhite
  • 43
  • 1
  • 1
  • 5

1 Answers1

0

The following code will repeatedly ask for temperatures and then show the minimum, maximum and average values.

The new thing in this code is the use of the datetime module and the datetime.time(hours + 1, 0).strftime('%H:%M') to format a value as 01:00, 02:00 and so on. This is using the strftime method on a time (which is what datetime.time() creates) and it formats the value as HH:MM (two digits for the hour, two digits for the minutes).

It also uses enumerate which is a built-in function that Python provides for going over a list of values while also providing a counter variable. So you'll get both the position in the list as well as the value at that position. This is useful in our case because we want to display both the hour and the temperate value of that hour.

import datetime

HourlyTemperatures = []

def GetTemperatures(HourlyTemperatures):
    for hours in range(0,24):
        message = "Please input a temperature for the hour: %s " % datetime.time(hours + 1, 0).strftime('%H:%M')
        HourlyTemperatures.append(int(input(message)))
        while HourlyTemperatures[hours] <= -50 or HourlyTemperatures[hours] >= 130:
            print("Please enter a valid Temperature between -50 or 130")
            HourlyTemperatures[hours] = int(input(message))

    return HourlyTemperatures

def ComputeAverageTemp(HourlyThemperatures):
    AverageTemperature = sum(HourlyTemperatures) / len(HourlyTemperatures)
    return AverageTemperature

def ComputeMaxTemp(HourlyTemperatures):
    MaxTemp = max(HourlyTemperatures)
    return MaxTemp

def ComputeMinTemp(HourlyTemperatures):
    MinTemp = min(HourlyTemperatures)
    return MinTemp


CalcTemperature = GetTemperatures(HourlyTemperatures)
AverageTemperature = ComputeAverageTemp(CalcTemperature)
MaxTemp = ComputeMaxTemp(CalcTemperature)
MinTemp = ComputeMinTemp(CalcTemperature)
print(CalcTemperature)
print(HourlyTemperatures)
print(AverageTemperature)
print(MaxTemp)
print(MinTemp)

for hour, temperature in enumerate(HourlyTemperatures):
    print("The temperature for " + datetime.time(hour + 1, 0).strftime('%H:%M') + " is " + str(temperature))
Simeon Visser
  • 118,920
  • 18
  • 185
  • 180