Я создаю генератор повторяющихся чисел и продолжаю получать ошибку ValueError

#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() его