Python, как игнорировать или исправить «IndexError: список индекса вне диапазона»? - PullRequest
0 голосов
/ 23 июня 2018

Таким образом, этот результат может иметь менее 10 ответов за раз. Мне трудно понять, как игнорировать, если 'overbought1' меньше 10. Например, если есть только 8 результатов, я бы хотел, чтобы он отображал 8 и игнорировал последние два, которых нет.

    try:
        for i in range(10):
            (runo[i])
    except:
        pass

    overbought1 = ("Top 10 overbought today: $" + runo[0] + " $" + runo[1] + " $" + runo[2] + " $" + runo[3] + " $" +runo[4] + " $" + runo[5] + " $" + runo[6] + " $" + runo[7]+ " $" + runo[8]+ " $" + runo[9])

    await client.say(overbought1)

1 Ответ

0 голосов
/ 23 июня 2018

Хотя весь ваш пример не имеет большого смысла, вот один из способов избежать IndexError:

for i in range(min(10, len(runo))): # loop at most to the minimum
                                    # between ten and len(runo)
    (runo[i]) # <-- this does nothing here!

Другой способ:

for v in runo[:10]: # access no more than first 10 elements
    v # <-- also does nothing. v is equivalent to runo[i] from the previous loop

Теперь, если вы хотитеисправьте overbought1 строку, затем сделайте следующее:

overbought1 = "Top 10 overbought today: $" + " $".join(runo[:10])

или даже:

overbought1 = ("Top %d overbought today: $" % len(runo)) + " $".join(runo[:10])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...