Требуется наибольшее отрицательное число из списка в Python

Задание:

  • Создайте пустой список под названием температуры.
  • Разрешить пользователю вводить серию температур вместе с контрольным значением.
    (не используйте число для контрольного значения), который остановит ввод данных пользователем.
  • Оцените список температур, чтобы определить наибольшую и наименьшую температуру.
  • Выведите самую большую температуру.
  • Выведите наименьшую температуру.
  • Распечатайте сообщение, которое сообщает пользователю, сколько температур находится в списке.

Проблема, с которой я столкнулся, заключается в том, что если мой список содержит [-11, -44, -77] моя программа печатает -11как самая низкая температура. Но мне нужно напечатать -77.

Мой код:

      # Create a list called temperatures to capture user input
temperatures_list = []

# Create a while loop to capture user input into the temperatures_list<br />
if __name__ == "__main__":<br />
    while True:
        enter_number = (input("Please enter a temperature (enter stop to end): "))
        if enter_number == "stop": break
        temperatures_list.append(enter_number)
    lowest_temp = min(temperatures_list)
    highest_temp = max(temperatures_list)
    total_temps = len(temperatures_list)

    # Print output of temperatures input by user
    print(f"The numbers you input are:", temperatures_list)
    print(f"The lowest temperature you input is: ", lowest_temp)
    print(f"The highest temperature you input is: ", highest_temp)
    print(f"There are a total of {total_temps} temperatures in your list")

3 ответа

Решение

Проблема в том, что числа представлены в строковом формате, поэтому min () и max () не сравнивают числовые значения значений списка. Это должно помочь:

      # Create a list called temperatures to capture user input
temperatures_list = []

# Create a while loop to capture user input into the temperatures_list<br />
if __name__ == "__main__":<br />
    while True:
        enter_number = (input("Please enter a temperature (enter stop to end): "))
        if enter_number == "stop": break
        temperatures_list.append(int(enter_number))
    lowest_temp = min(temperatures_list)
    highest_temp = max(temperatures_list)
    total_temps = len(temperatures_list)

    # Print output of temperatures input by user
    print(f"The numbers you input are:", temperatures_list)
    print(f"The lowest temperature you input is: ", lowest_temp)
    print(f"The highest temperature you input is: ", highest_temp)
    print(f"There are a total of {total_temps} temperatures in your list")

В качестве побочного примечания вы можете добавить попытку, кроме случаев, когда пользователь вводит значения, не являющиеся числами, так как это приведет к сбою вашей программы при преобразовании значений в целочисленный тип. Например:

      # Create a list called temperatures to capture user input
temperatures_list = []

# Create a while loop to capture user input into the temperatures_list<br />
if __name__ == "__main__":<br />
    while True:
        enter_number = (input("Please enter a temperature (enter stop to end): "))
        if enter_number == "stop": break
        try:
            temperatures_list.append(int(enter_number))
        except ValueError:
            print('That wasn't a number! Try again)

    lowest_temp = min(temperatures_list)
    highest_temp = max(temperatures_list)
    total_temps = len(temperatures_list)

    # Print output of temperatures input by user
    print(f"The numbers you input are:", temperatures_list)
    print(f"The lowest temperature you input is: ", lowest_temp)
    print(f"The highest temperature you input is: ", highest_temp)
    print(f"There are a total of {total_temps} temperatures in your list")

float() также будет работать, если вы хотите включить числа с десятичными знаками.

Преобразуйте ввод в int, прежде чем добавлять его в temperatures_list:

      while True:
    enter_number = (input("Please enter a temperature (enter stop to end): "))
    if enter_number == "stop": break
    temperatures_list.append(int(enter_number))

Создать функцию

      def lowest_temp(temps):
    p = 0
    for i in temps:
        if i < i+1:
            p=i
    return p
Другие вопросы по тегам