#python #numbers
#python #числа
Вопрос:
Я продолжаю получать ошибку ValueError для этого кода. Может кто-нибудь помочь мне здесь?
f = open('perrin.txt','a')
perrinv.append(perrin(value))
perrinfd[(int(str(perrin(value))[0]))-1] = 1
rfd = [perrinfd[x]/sum(perrinfd) for x in range(0,9)]
error = sum([abs(rfd[x]-benFreqs[x]) for x in range(0,9)])
f.write(str(error) 'n')
f.close()
Вот ошибка
Traceback (most recent call last):
File "main.py", line 107, in <module>
perrinfd[(int(str(perrin(value))[0]))-1] = 1
ValueError: invalid literal for int() with base 10: '-'
Может кто-нибудь мне помочь?
Ответ №1:
В будущем, пожалуйста, укажите функции, которые вы использовали, чтобы мы могли попытаться воссоздать ошибку. Лучше всего то, что в этой строке: perrinfd[(int(str(perrin(value))[0]))-1] = 1
, perin(value)
возвращает отрицательное число (допустим -10.2
). Затем, преобразуя в строку и беря первую букву, получаем -
. Затем вы пытаетесь преобразовать это обратно в int, что явно невозможно (это то, о чем говорит ошибка).
Я не уверен, что делают функции и чего вы пытаетесь достичь с помощью этой строки, но выберите одно из следующих исправлений, основываясь на том, каким вы хотели бы видеть поведение:
- Сначала вызовите abs(), чтобы проигнорировать / удалить отрицательный
- устранение неполадок perin()
- Возможно, проверьте знак, а затем добавьте его после преобразования обратно в целое число
Ответ №2:
Проверьте «perrin.txt «, похоже str(perrin(value))[0]
, что это «-«, поэтому он выдает вам ошибку, потому что это не целое число, и вы пытаетесь использовать int()
его