По какой причине мой температурный список не позволяет мне проверять верхние и нижние пределы? - PullRequest
0 голосов
/ 16 марта 2020

Вот мой код

  Temperatures=[]
  Hours = int(input("Enter hours in the day: "))

  for i in range(Hours):
      Temperatures.append(int(input('Enter temperature: ')))
      while(Temperatures > -50 and Temperatures < 150):
          print(Temperatures)
          if (-50 > Temperatures > 150):
              print("Re-Enter Temperature")

Я получаю ошибку

    while(Temperatures > -50 and Temperatures < 150):
TypeError: '>' not supported between instances of 'list' and 'int'

Я не уверен, что мне здесь не хватает.

Ответы [ 2 ]

0 голосов
/ 16 марта 2020

Итак, здесь есть несколько вопросов. Вы сравниваете список с целым числом.

Вы также добавляете значение в массив еще до того, как проверяете, является ли оно допустимым. Таким образом, вы добавите значения, даже если они находятся за пределами допустимых диапазонов.

Проверка перед добавлением в массив решает обе эти проблемы, а также устраняет необходимость беспокоиться о них. он индекс. Поскольку вы не будете использовать индекс, лучше заменить переменную for l oop на подчеркивание.

Temperatures=[]
# The try-catch/if-else that I do for the input below should be done here to clean user input
Hours = int(input("Enter hours in the day: "))

for _ in range(Hours): # Changed this to underscore since we don't use it.
    valid_temp = False # used to continuously get temps until you get a valid one.

    while not valid_temp:
        # This is the try-catch if-else that I mentioned above
        # Here we split up the input to handle different issues.
        temp_in = input('Enter temperature: ')
        try:
            # Checking that a number was entered instead of a string or something else.
            temp_in = int(temp_in)
        except ValueError:
            print('Temperatures must be numeric')
            # Since a number was not entered this skips to the next iteration of the while loop
            continue

        # Checks if it's in a valid temp.
        if temp_in > -50 and temp_in < 150:
            Temperatures.append(temp_in)
            print(Temperatures)
            # Terminates the loop since a valid temp was entered.
            valid_temp = True
        else:
            print('Please Re-Enter Temperature')
            # Since a valid temp was not entered the while loop is started over.
            continue
0 голосов
/ 16 марта 2020

Это потому, что, как говорит ошибка, вы пытаетесь сравнить список с целым числом. Если вы хотите получить доступ к указанным c значениям внутри списка, вам нужно использовать позицию индекса. Способ устранения этой ошибки:

  Temperatures=[]
  Hours = int(input("Enter hours in the day: "))

  for i in range(Hours):
      while(Temperatures[i] > -50 and Temperatures[i] < 150):
      Temperatures.append(int(input('Enter temperature: ')))
          print(str(Temperatures[i]))
          if (-50 > Temperatures[i] > 150):
              print("Re-Enter Temperature")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...