MihaUZZ2000
@MihaUZZ2000
Ищу единомышленников для up level of programming

Не могу понять почему вылезает ошибка в коде python!?

Этот код прекрасно переводит из 10-ой в 2-ую систему счисления, как в коде заметно полученное число принадлежит class (даже при применении метода type()). В дальнейшем я должен работать со строками и при проведении теста вылезла ошибка, помогите разобраться с ней, заранее благодарю,

a, b, c = input().split()
a = int(a)
b = int(b)
c = int(c)
ost = 0
dba =''
dbb =''
dbc =''
maxi = 0

def translatedb(st1, sto, sts): # <------ Начало метода перевода
  while(st1 >= 1):
    sto = st1 - (st1//2 * 2)
    sts =str(sts + str(sto))
    st1 = st1 // 2 
  sts = sts[::-1]
  print(sts)# Метод переводит в двоичную систему
                         #      _____________________________
translatedb(a, ost, dba) # ---|                               |
translatedb(b, ost, dbb) # ---| Вызов для трех чисел!!!!!!!!  |
translatedb(c, ost, dbc) # ---|_______________________________|

a = len(dba)
b = len(dbb)
c = len(dbc)

print(dbb[1])


Результат вывода:
76 85 104 <------ Ввод с клавиатуры
1001100
1010101
1101000
Traceback (most recent call last):
File "python", line 27, in
IndexError: string index out of range
  • Вопрос задан
  • 279 просмотров
Пригласить эксперта
Ответы на вопрос 1
@clopik
В функции аргументы передаются по ссылке, но их изменение внутри функции не всегда приводит к изменению переданного объекта. Если переданы экземпляры классов, списки, словари (mutable объекты), то изменение их состояния отразится на исходном объекте. Если же в функцию переданы числа, строки или кортежи (immutable объекты), то при попытке изменить их значение в теле функции будет создан новый объект того же типа, но уже локально, а переданный снаружи объект изменен не будет. В вашем случае dba, dbb и dbc будут равны пустой строке как и до вызова translatedb.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы