Проблемы с бесконечным while
import random
import keyboard
while True:
while True:
if keyboard.is_pressed("`"):
print(keyboard.is_pressed('`'))
t_list = ["1", "2", "3", "4"]
random_index = random.randint(0, len(t_list))
print(t_list[random_index])
if random_index == 1:
keyboard.send('f1')
if random_index == 2:
keyboard.send('f2')
if random_index == 3:
keyboard.send('f3')
if random_index == 4:
keyboard.send('f4')
break
Хочу чтобы при запуске файла он не вырубался пока я его сам не остановлю, и во время того как я нажму 'ё' он 1 раз нажмёт выбранную рандомом кнопку! Но оно останавливается и не знаю почему! Помогите пожалуйста!
Ответы (2 шт):
В следующий раз выкладывай вывод исключения
True
3
4
True
2
3
True
2
3
True
0
1
True
4
Traceback (most recent call last):
File "C:\Users\maxim\Desktop\ai\test.py", line 10, in <module>
print(t_list[random_index])
IndexError: list index out of range
Данное исключение означает, что интерпретатор пытается получить доступ к элементу list[4] хотя размер списка равен четырём то есть [0, 1, 2, 3, 4] в списке существует элемент с индексом четыре только если его размер равен пяти.
Внеси следующие изменения
random_index = random.randint(0, len(t_list)-1)
Использование бесконечного цикла в бесконечном цикле - не очень хорошея затея, т.к. есть вероятность зависания ПК.
Если еще актуально, то вот решение с Вашей логикой (с обходом индексов) + без двойного while:
import random
import keyboard
t_list = ['f'+str(i) for i in range(1, 5)] # Через генератор делаем клавиши ['f1', 'f2', 'f3', 'f4']
keyboard.wait('`') # ожидаем нажатия апострофа - ` (на букве ё)
key = t_list[random.randint(0, len(t_list)-1)] # по случайному индексу вытаскиваем клавишу
print('Send key: ', key)
keyboard.send(key)