2016-02-12 3 views
0

Так что я пытаюсь решить следующую проблему от УФА онлайных судей: https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&problem=2864UVa Run в Python

я написал следующий код в Python:

t = int(input()) 
for i in range(t): 
    highs = 0 
    lows = 0 
    walls = int(input()) 
    heights = [0]*50 
    for h in range(walls): 
     heights[h] = (int(input())) 
    for j in range(1, walls): 
     if (heights[j] < heights[j - 1]): 
      highs += 1 
     elif (heights[j] > heights[j - 1]): 
      lows += 1 
    print("Case %d: %d %d" % (i + 1, highs, lows)) 

exit(0) 

Каждый раз, когда я попробуйте мой код с различными тестовыми примерами, я получаю ожидаемый результат; он отлично работает в моей стороне, но когда я его отправляю, я продолжаю получать Runtime Error. Сейчас я отчаялся, так как я попробовал миллион вещей, и ничего не работает. Пожалуйста помоги.

+0

Я получаю ошибку времени выполнения, не очень полезно ... при догадках судья использует 2.7, и вы написали его для 3.x –

+1

Добро пожаловать в StackOverflow. Если вы предоставите сообщение «RunTimeError», это поможет увидеть, что происходит - просто отредактируйте вопрос и вставьте его там ;-) – SebasSBM

+0

Спасибо @SebasSBM, но онлайн-судья не указывает, какой RunTimeError он –

ответ

1

Я думаю, что ошибка здесь:

for h in range(walls): 
    heights[h] = (int(input())) 

input() читает строку, затем int() пытается преобразовать строку в целое число. Но "1 4 2 2 3 5 3 4" не может быть преобразован в целое число, и если вы читаете 8 строк, у вас, вероятно, закончится ввод.

Вместо этого попробуйте

heights = [int(i) for i in input().split()] 

, который должен возвращать [1, 4, 2, 2, 3, 5, 3, 4].

+0

Спасибо, много! Это сделало это, судья принял код. –

0

Как предложил Runtime Ошибка в этой части кода:

for h in range(walls): 
    heights[h] = (int(input())) 

, что вы можете изменить для

heights = [int(i) for i in input().split()] 

и опускать линию

heights = [0]*50 

Другое дело, что Я обнаружил, что вы рассчитываете на противоположные манеры минимумов и максимумов. Вы должны сделать:

if (heights[j] < heights[j - 1]): 
     lows += 1 
    elif (heights[j] > heights[j - 1]): 
     highs += 1 

Это должно сработать. Надеюсь, вы получите решение, принятое;)

+0

Спасибо, я понял! –

+0

Добро пожаловать, чувак! – melalonso