Как не изменять по ссылке переменную в функции или создать копию переменной без ссылки
Почему у меня выводится Warning12?
Функция ft_print_positive выводит посимвольно положительное число в стандартный поток вывода
Я вроде как понял, что это из-за связи по ссылке переменных, но как их разрушить?
ft_print_nbr должна выводить число посимвольно в стандартный поток вывода
import sys;
sys.stdout.flush();
def ft_print_positive(nbr):
if (nbr != 0):
ft_print_nbr(nbr // 10)
sys.stdout.write(chr(48 + nbr % 10))
def ft_print_nbr(nbr):
nbr_copy = nbr
if (nbr < 0):
nbr_copy = nbr_copy * -1
sys.stdout.write('-')
ft_print_positive(nbr_copy)
elif (nbr == 0):
sys.stdout.write('Warning')
elif (nbr > 0):
ft_print_positive(nbr_copy)
ft_print_nbr(12)
Ответы (1 шт):
Автор решения: Михаил Камахин
→ Ссылка
Оказывается, ничего не изменяется по ссылке, я просто не ту функцию вызывал в ft_print_positive, я должен был вызывать её же, но вызывал ft_print_nbr
import sys;
sys.stdout.flush();
def ft_print_positive(nbr):
if (nbr != 0):
ft_print_positive(nbr // 10)
sys.stdout.write(chr(48 + nbr % 10))
def ft_print_nbr(nbr):
if (nbr < 0):
nbr = nbr * -1
sys.stdout.write('-')
ft_print_positive(nbr)
elif (nbr == 0):
sys.stdout.write('0')
elif (nbr > 0):
ft_print_positive(nbr)
ft_print_nbr(-347)