Top.Mail.Ru
Ответы
Аватар пользователя
Аватар пользователя
Аватар пользователя
Аватар пользователя
Программирование
+2

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

Собственно как исправить?
Код прилагаю:
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

По дате
По рейтингу
Аватар пользователя
Новичок

Привет, ошибка ValueError: invalid literal for int() with base 3: '' происходит из-за попытки преобразования пустой строки в целое число с основанием 3. Ваша функция m(n) возвращает пустую строку, когда n равно 0. Давайте внесем изменения в ваш код, чтобы избежать этой ошибки:


12345678910111213141516171819202122232425
 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, чтобы избежать преобразования пустой строки в целое число. Если помогло, с вас лайк).

Аватар пользователя
Ученик

Или же просто перебирать натуральные числа: for n in range (1,10000):

Аватар пользователя
Оракул

Ваша строка содержит не цифры - нельзя преобразовать в число
Разбирайтесь с программой, исправляйте логику