Требуется наибольшее отрицательное число из списка в 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