Вопрос Не работает код на python что делать

Регистрация
4 Окт 2013
Сообщения
78
Репутация
-2
Спасибо
0
Монет
0
import copy

def pack(inp):

deepcopy = copy.deepcopy

def _convert(tip,val):

match tip:

case 1:

if val < 62: return [val]

else: return [63,val//65536,val%65536//256,val%65536%256]

case 2:

if val < 32: return [64+val]

elif val < 8192: return [96+val//256,val%256]

elif val < 262144: return [128+val//65536,val%65536//256,val%65536%256]

else: return [160+val//16777216,val%16777216//65536,val%16777216%65536//256,val%16777216%65536%256]

case 3:

if val < 62: return [192+val]

else: return [255,val//65536,val%65536//256,val%65536%256]

def _rle(inp):

pass

def _indexs(string,substring,closed):

indexs = []

stringpos = 0

sublen = len(substring)

startindex = 0

for num in range(len(string)):

if string[num] == substring[stringpos]:

stringpos += 1

if stringpos == 1: startindex = num

else: stringpos = 0

if stringpos == sublen:

stringpos = 0

isclosed = 0

for num2 in range(startindex,num+1):

if closed[num]:

isclosed = 1

break

if not isclosed: indexs.append(startindex)

return indexs

def _pack(inp,selectmode):

closed = [0]*len(inp)

repeats = []

selected = []

selecteds = []

indexs = []

koofs = []

num = 0

clipboardindex = -1

while num < len(inp):

if closed[num]: continue

selected.append(inp[num])

if len(selected) > 1:

nowindexs = _indexs(inp,selected,closed)

if len(nowindexs) < 2 or len (selected) == 65536:

temp = koofs.index(max(koofs))

if koofs[temp] > 0:

selected_indexs = indexs[temp]

selected_selected = selecteds[temp]

clipboardindex += 1

for num2 in range(len(selected_indexs)):

if num2 == 0: repeats.append([1,selected_indexs[num2],selected_indexs[num2]+len(selected_selected),clipboardindex])

else: repeats.append([2,selected_indexs[num2],selected_indexs[num2]+len(selected_selected),clipboardindex])

for num3 in range(selected_indexs[num2],selected_indexs[num2]+len(selected_selected)): closed[num3] = 1

else: num =- 1

selected = []

selecteds = []

indexs = []

koofs = []

else:

selecteds.append(deepcopy(selected))

indexs.append(deepcopy(nowindexs))

koofs.append((len(selected)*len(nowindexs))-(len(selected)+len(nowindexs)))

num += 1

print(closed)

print(repeats)

print(inp)

_pack(inp,1)

pack(["a", "b", "r", "a", "c", "a", "d", "a", "b", "r", "a"]) пишет ошибку

temp = koofs.index(max(koofs))

^^^^^^^^^^

ValueError: max() arg is an empty sequence

помогите

почему то список koofs пустой но такого не должно быть
 
Это происходит потому, что список koofs добавляется только тогда, когда длина selected больше 1 и длина nowindexs больше или равна 2. Если эти условия не выполняются, то список koofs остается пустым.

Вы можете попробовать добавить условие для проверки того, пуст ли список koofs, прежде чем пытаться найти в нем максимальное значение. Например, вы можете изменить эту строку: temp = koofs.index(max(koofs))
на: if koofs:
temp = koofs.index(max(koofs))
else:
# обработка случая, когда koofs пуст
Это предотвратит возникновение ошибки, но вам нужно будет решить, как обрабатывать случай, когда koofs пуст.
 
попробуй это if not koofs:
koofs.append((len(selected)*len(nowindexs))-(len(selected)+len(nowindexs)))
 
У вас этот koofs до этого нигде не наполняется содержимым, поэтому он пустой и найти в нем максимум проблематично.
4755221_82193f3f7efe8150b211b128e54f10c1_800.png

koofs = [] - это единственное определение этого koofs и дальше вы сразу от него пытаетесь найти максимум.
Скорее всего вы либо не проработали алгоритм, либо неправильно его закодировали.
Во всяком случае радует, что вы для программы для питона использовали специальную кнопку для вставки кода, другие учащиеся этого не делают и все значимые пробелы в начале идут лесом.
 
Назад
Сверху