@iayjull

Почему программа со списками в питоне выводит неверный ответ?

import random
x=[random.randint(-10,10) for i in range(12)]
x.sort()
x.reverse()
 
for i in x:
    if i>=0:
        c=0
    if i<0:
         continue
    c=i
y=x.index(c)

print(x)
print(c,y)


вопрос:
С 8 до 20 часов температура воздуха измерялась ежечасно. Известно, что в течение этого времени температура понижалась. Определите, в котором часу была впервые отмечена отрицательная температура.
из списка [9, 8, 7, 7, 6, 3, 1, -2, -3, -7, -7, -9]
выводит числа 1 и 6, а должен -2 и 7
(вместо нужного первого отрицательного числа и его индекса выводит число перед отрицательным и его индекс)

не знаю, как решить.
  • Вопрос задан
  • 87 просмотров
Решения вопроса 2
phaggi
@phaggi Куратор тега Python
лужу, паяю, ЭВМы починяю
data = [9, 8, 7, 7, 6, 3, 1, -2, -3, -7, -7, -9]
counter = 0
while not data[counter] < 0:
    counter += 1
print(data[counter], counter)

или
data = [9, 8, 7, 7, 6, 3, 1, -2, -3, -7, -7, -9]
for counter, temperature in enumerate(data):
    if temperature < 0:
        print(temperature, counter)
        break

но я не очень люблю break, это субъективно.

Ну и кривенький однострочничек:
data = [9, 8, 7, 7, 6, 3, 1, -2, -3, -7, -7, -9]
print(*[(temperature, counter) for counter, temperature in enumerate(data) if temperature < 0][0])
Ответ написан
Комментировать
@Shpindel_t_800
import random
x=[random.randint(-10,10) for i in range(12)]
x.sort()
x.reverse()

for i in x:
    if i < 0:
        print(x.index(i), i)
        break
print(x)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Persifox
import random
x=[random.randint(-10,10) for i in range(12)]
x.sort()
x.reverse()
 
for i in x:
    if i>=0:
        c=0
    if i<0:
         continue
    c=x[x.index(i) + 1] #если индекс отличается на 1, значит мы это насильно изменим
y=x.index(c)

print(x)
print(c,y)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы