В курсе содержатся примеры из устаревшей версии питона. Будет ли переработка курса, или в процессе обучения надо самостоятельно перекладывать программные коды на версию 3.7?
В С операция "присваивание" возвращает результат - значение выражения стоящего слева. Т.е. a=100 - кроме того что присвоит значение 100 переменной a, ещё и вернёт значение 100. Таки образом в C возможно множественное присванивание : a=b=c=100 - равносильно a=(b=(c=100)), также возможна такая конструкция: if (a=b) - в резултате и значение присвоится a, и if сработает на значение b
1. if n == 0: #Непонятно почему не просто "if not n :"
2. return [] - возвращает пустой объект класса list, т. е. если мы напишем A = bin(0), это будет эквивалентно A = [], и не будет работать, т.к. у питона слово bin является ключевым (по крайней мере в 3.7.1 )
3. А так, симпатичная рекурсивная функция по переводу числа в двоичное представление. По факту if n == 0: это конечный случай.
Мне в виде строки представление результата больше нравится, вот код если кто-то захочет поиграться (к сожалению сайт удаляет пробелы и табуляцию, замените ####на символы пробела или одну табуляцию):
def bin_num(n):
####"""Цифры двоичного представления натурального числа"""
####if not n: return ""
####n, d = divmod(n, 2)
####return bin_num(n) + '{}'.format(d)
print(bin_num(69))
Не могу разобраться с append+рекурсия def appender(what, how_many, where=[]):
where = where or []
if how_many == 0:
return where
else:
return appender(what, how_many - 1, where.append(what))
в итоге у тебя никогда не передается 3 параметр,
еще where=[] закешируется и в след вызове будет отдаваться ко всему прочему и результат предудущих вызовов
Добрый день. Почти все экзамены в виде теста