Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Ошибка ValueError: invalid literal for int() with base 3: '' Python

Monstr1k Мыслитель (9739), закрыт 1 год назад
Собственно как исправить?
Код прилагаю:
def m(n):
t=''
while n>0:
d=str(n%2)
t=d+t
n=n//3
return t

for n in range (10000):
n3=m(n)
if n%3==0:
r3=n3[-2:]+n3+n3[-2:]
else:
r3=m((n%3)*2)+n3
r=int(r3, 3)
if r>1000:
print(n)
break
Лучший ответ
Skilliton Про IT Знаток (382) 1 год назад
Привет, ошибка ValueError: invalid literal for int() with base 3: '' происходит из-за попытки преобразования пустой строки в целое число с основанием 3. Ваша функция m(n) возвращает пустую строку, когда n равно 0. Давайте внесем изменения в ваш код, чтобы избежать этой ошибки:


 def m(n): 
if n == 0:
return '0'

t = ''
while n > 0:
d = str(n % 2)
t = d + t
n = n // 3
return t

for n in range(10000):
n3 = m(n)

if n % 3 == 0:
r3 = n3[-2:] + n3 + n3[-2:]
else:
r3 = m((n % 3) * 2) + n3

if r3: # Проверка на пустую строку
r = int(r3, 3)
if r > 1000:
print(n)
break
Добавлена проверка if r3, чтобы избежать преобразования пустой строки в целое число. Если помогло, с вас лайк).
MrFrostGold ЮтуберПрофи (628) 4 месяца назад
КАКОЙ ЖЕ ТЫ ЗНАТОК БОЖЕ СПАСИ ТВОЮ ДУШУ!!!
Остальные ответы
Оракул Оракул (63343) 1 год назад
Ваша строка содержит не цифры - нельзя преобразовать в число
Разбирайтесь с программой, исправляйте логику
Асылу Пономарева Ученик (145) 11 месяцев назад
Или же просто перебирать натуральные числа: for n in range (1,10000):
Похожие вопросы