Тёмный

Что спросят на собеседовании по программированию? Задачи для junior программиста. Секреты Python 3. 

Murrengan
Подписаться 8 тыс.
Просмотров 37 тыс.
50% 1

Здарова, братан💋💗!
В этом видосе мы разбирем задачи, которые могут спросить при устройстве на работу программистом.
Разбираем такие фишки python как:
list
set
len
range
try/except
raise
Попробуй решить данные задачи и напиши свой вариант в комментариях!
Если тебе понравился этот видос, то не забудь оставить комментарий.
МНЕ БУДЕТ ПРИЯТНО 😋
Да пребудет с нами сила!
Поддержать денежкой (любые карты и переводы):
Donationalerts - clck.ru/FYzwp
Вся тусовка тут:
► Telegram: t.me/MurrenganChat
► GitHub: github.com/Murrengan/murr
► Vk: murrengan
►Trello: trello.com/b/yfjytAFU/murrengan
#murrengan #python3 #собеседование

Опубликовано:

 

16 май 2019

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 397   
@user-ud4vg5sx6d
@user-ud4vg5sx6d 2 года назад
Держи. Классный.Понравился.Подписался.
@gorodiskykirill4193
@gorodiskykirill4193 5 лет назад
Побольше бы таких видосов!))
@Murrengan
@Murrengan 5 лет назад
😘
@user-mw2co3wb9k
@user-mw2co3wb9k Год назад
1 задача можно измерять изначальную длину списка, затем перевести этот список в множества и опять определить длину, если длина множества меньше чем длина списка, значит есть дубликаты =)
@qrthack3233
@qrthack3233 5 лет назад
больше таких роликов, братишка)))
@Murrengan
@Murrengan 5 лет назад
Да пребудет с нами сила 💪 =)
@Tovarish100lin
@Tovarish100lin 3 года назад
​@@Murrengan хочешь сломаю первую задачу?) Введи [0, False] и приведение типов в сете сыграет злую шутку, советую все значения в листе сначала привести к строчному виду, а потом уже сравнивать сеты, поэтому и нужны тесты не от балды, а заранее проработанные
@user-kw3ry1kc3x
@user-kw3ry1kc3x 3 года назад
@@Tovarish100lin лол, написано, что есть список целых чисел
@ecomanermetaverse522
@ecomanermetaverse522 3 года назад
Chekio решать начал. Новичок. Спасибо за видео!
@Murrengan
@Murrengan 3 года назад
=*
@nurlantoktobekov4746
@nurlantoktobekov4746 3 года назад
Лайк прожал, подписку кинул. Отлично объясняешь чувак 👍
@Murrengan
@Murrengan 3 года назад
❤️
@mindfulnessbeauty9175
@mindfulnessbeauty9175 3 года назад
Мне нравиться твоя подача в видео)
@Murrengan
@Murrengan 3 года назад
благодарю -)
@user-cs2ji4tf4v
@user-cs2ji4tf4v Год назад
топ
@dimakrilovskiy9902
@dimakrilovskiy9902 5 лет назад
Это огонь) Ты вообще очень толковый человек. Причем затрагиваешь даже тесты =) Многие новички из за этого и мучаются. Потому что каша в голове. А тесты хоть как то структуризируют разработку.
@Murrengan
@Murrengan 5 лет назад
Мурр =) Да пребудет с тобой сила!
@Introvert_MVP
@Introvert_MVP 3 года назад
Топ видос. Новичок в пайтоне, но глядя на такие решения попросту мозги начинают работать лучше.👍
@Murrengan
@Murrengan 3 года назад
Задонать мне - было бы немлохо =)
@Introvert_MVP
@Introvert_MVP 3 года назад
@@Murrengan, вот если смогу найти работу в IT(имею планы на data science). Вот тогда с удовольствием задоначу. А пока что я никому не нужный студент-економист🙃. Так что денежка и так в обрез.
@milmulnir
@milmulnir Год назад
Поставила лайк, тк ты единственный блогер, который сказал "поставьте пж лайк, ТК.... ")
@PythonDevelopment
@PythonDevelopment 3 года назад
Здаров, братан. Я готовлючь к собесу и собрался делать резюме. Один проект на flask + peewee готов почти, хочу еще натянуть личный кабинет и регу.
@Murrengan
@Murrengan 3 года назад
понял, приихоид на стрим показывай что сделал
@user-wz6km9zy1j
@user-wz6km9zy1j 4 года назад
Вторая задача: def sum_of_digits(num): if type(num) is not int: return 'Must be integer!' return sum(map(int, str(num))) num = 391 print(sum_of_digits(num))
@Murrengan
@Murrengan 4 года назад
красава!
@RadinoSka
@RadinoSka 2 года назад
if type(num) is not int: - if not isinstance(num, int):
@ZlataDobrovolny
@ZlataDobrovolny 2 года назад
Спасибо очень интересно! а продолжение уже выпустили?
@Murrengan
@Murrengan 2 года назад
да - уже сделали переделали и сегодня будем запускать все с нуля в кубернетисе)
@wtsupman
@wtsupman 2 года назад
2 задача def foo(num): return sum(map(int, str(num)) Или генератором Nums = [int(i) for i in str(num)] return sum(Nums)
@user-gx3br1iu3w
@user-gx3br1iu3w Год назад
можно просто return sum([int(i) for i in str(num)])
@FEgor2004
@FEgor2004 5 лет назад
Во второй задаче можно брать остаток от деления на 10 и целочисленное делить на 10 пока число > 0 и суммировать. Так даже быстрее по асимптотике будет.
@Murrengan
@Murrengan 5 лет назад
хорошо подмечено )
@user-lo4lz2hu1y
@user-lo4lz2hu1y 5 лет назад
Вот это крутота, ничего конечно решить не получается но такие задачки заставляют пошевелить извилинами и стимулируют продолжать изучать Пайтон.
@Murrengan
@Murrengan 5 лет назад
Да пребудет с тобой сила! =)
@user-kh3ks2eh3q
@user-kh3ks2eh3q 4 года назад
Я извиняюсь, а вот так не проще было бы? def summing(count: int): start = 0 for i in str(count): start += int(i) return start
@Murrengan
@Murrengan 4 года назад
Четко! Красава!
@volodyaorlov47
@volodyaorlov47 2 года назад
return sum([int(x) for x in str(count)])
@bekhruziskandarzoda3726
@bekhruziskandarzoda3726 2 года назад
Нельзя забывать про тип передаваемых аргументов. Программа завершится с TypeError. Лучше try / except, а не int / float значения просто воспринимать как ноль. Соответственно, суммироваться будут только числа
@Xen0ne_ve
@Xen0ne_ve 4 года назад
2 задача some_digit = "1321564497" a = [] for i in range(len(some_digit)): a.append( int(str(some_digit)[i]) ) print( sum( a ) )
@ivan100kg
@ivan100kg 3 года назад
return True if len(L) == len(set(L)) else False
@Murrengan
@Murrengan 3 года назад
норм, но что за заглавная буква
@Damir8100
@Damir8100 Год назад
задачу 3 решил так a=int(input('some_digit \t')) print(str(9)*a) или через def: def main(): a=int(input('some_digit \t')) print('max_dig', '\t',calc(a)) def calc(a): return str(9)*a main()
@ivansofronov4773
@ivansofronov4773 4 года назад
во втором задании можно просто итерироваться по строке! for i in str: result += int(i)
@Murrengan
@Murrengan 4 года назад
красиво!
@ivansofronov4773
@ivansofronov4773 4 года назад
Кстати у Вас был урок вы не могли получить данные из json Vue вы делали через стрелочную функцию скорее всего в этом косяк, т.к. она не имеет контекста This
@Murrengan
@Murrengan 4 года назад
благодарю - поправили =)
@user-qt1sv4hb5m
@user-qt1sv4hb5m 4 года назад
>>> def su(sd): ... s = 0 ... for i in str(sd): ... s += int(i) ... print(s)
@user-ux5ek3ck7h
@user-ux5ek3ck7h 2 года назад
а если во второй задаче передана строка в виде числа '26' ? тогда мы переведём ее в число и посчитаем, хотя не должны были бы. Нужно проверять тип преданного значения сразу на входе в функцию, может ошибаюсь.
@dedunovich
@dedunovich 4 года назад
Здравствуйте, вопрос есть, почему первая работает нормально. Ведь Len возвращает длину списка. Пустой список - длина 0. 0==0 -> должно вернуть true. Но почему-то возвращает false.
@d1me116
@d1me116 4 года назад
Попытался решить первую задачу через сортировку. arr = [1,2,6,3,2] def sort(arr): l = len(arr) for i in range(l - 1): for j in range(l - i - 1): if arr[j] > arr[j+1]: arr[j], arr[j+1] = arr[j+1], arr[j] return arr print(len(arr)) def contains_duplicates(arr): for i in range(len(arr) + 1): if arr[i] == arr[i+1]: return True else: return False print(contains_duplicates(sort(arr)))
@Murrengan
@Murrengan 4 года назад
Много кода - посмотри другие решения более секси
@yelcheenyelcheen2561
@yelcheenyelcheen2561 4 года назад
1. return len(example_test) > len(set(example_test))
@Murrengan
@Murrengan 4 года назад
четко =)
@user-gw3ii4to3q
@user-gw3ii4to3q 2 года назад
Вот да, самое очевидное - алгебра логики
@user-yq9zf6qb2o
@user-yq9zf6qb2o 5 лет назад
Решение второй задачи: num = input("Введите число") if num.isnumeric(): print(sum(map(int, num))) else: print("Чё самый умный?")
@kalyszhek5296
@kalyszhek5296 4 года назад
Я новичок в Пайтоне. это вобще рабочий код??
@user-iz1rt5pj4u
@user-iz1rt5pj4u 4 года назад
@@kalyszhek5296 проверил, все гут: def some_of_digit(some_number): number_of_digits = str(some_number) print(sum(map(int, number_of_digits))) some_digit = 42323282329 some_of_digit(some_digit)
@user-iz1rt5pj4u
@user-iz1rt5pj4u 4 года назад
но лучше с try - except
@mihail-ln4rf
@mihail-ln4rf 4 года назад
sum_of_digits = lambda number: sum(map(int, str(number))) if type(number) is int else 'че самый умный?'
@steels8046
@steels8046 4 года назад
def digit(st): kol=int() if st.isdigit() != True: return("Че самый умный ") else: for el in range(len(st)): kol+=int(st[el]) return kol
@DayAlexay
@DayAlexay 4 года назад
Вторую задачу можно решить еще while (num>0) и берем остаток от деления на 10 и прибавляем в сумму.
@Murrengan
@Murrengan 4 года назад
мммм... точняк ) красава!
@dmitirymulyakov6663
@dmitirymulyakov6663 4 года назад
Старый, добрый ЕГЭшный, нооо нерационально. Очень много жрет эта операция.
@Damir8100
@Damir8100 Год назад
я вторую так решил .не самый короткий путь конечно def main(): try: x=input('введи значение \t') print(sum_dig(x)) except : print('чо самый умный') def sum_dig(x): num=str(x) total=0 for x in num: x=int(x) total=total+x return total main()
@user-oh8oq4oz7d
@user-oh8oq4oz7d Год назад
Ламерские решения. Особенно последние. Можно просто число умножить на строку 9. Сложность алгоритма совсем другая
@maxamly
@maxamly 4 года назад
третья можно вот так: def max_digit(digit): return "9"*digit
@Murrengan
@Murrengan 4 года назад
четко! =)
@bohdanmarynushkin7630
@bohdanmarynushkin7630 4 года назад
Ошибочка) 0 выдаст ошибку
@catfitch7919
@catfitch7919 4 года назад
@@bohdanmarynushkin7630 return "9" * int(some_digit) и ошибки не будет.
@veravovk7283
@veravovk7283 4 года назад
@@catfitch7919 : и в int полученную строку return int("9" * int(some_digit))
@5kotlet208
@5kotlet208 4 года назад
return int('9' * digit) - чтобы никто не придрался к str ;)
@alexch855
@alexch855 3 года назад
На c++ без мягкой типизации сумма цифр в числе тоже ищется в несколько строчек кода. . Например так: int sum_of_digits(int some_number){ int result = 0; while(some_number>0){ result += some_number % 10; some_number = some_number / 10; } return(result); }
@Murrengan
@Murrengan 3 года назад
понимаю. а при чем тут c++ ?)
@alexch855
@alexch855 3 года назад
@@Murrengan 7:27
@JekaChernigiv
@JekaChernigiv 3 года назад
Задача 3 def func(n): return int('9'*n)
@Murrengan
@Murrengan 3 года назад
четко
@illyafokin2069
@illyafokin2069 4 года назад
Именно так я бы решил на C++, вторую задачу, как в первом способе ))) IntToStr(StrToInt(some)+....)), и также строка - массив.
@Murrengan
@Murrengan 4 года назад
😮
@btm210
@btm210 2 года назад
Второе можно так решить : def f(i:int): ...if type(i) is not int: ......return 'Чё, самый умный?' ...return sum(map(int,str(i)))
@Murrengan
@Murrengan 2 года назад
норм, но не красиво - посмотри варикка в комментах
@olegbabichev5963
@olegbabichev5963 3 года назад
Очень) легко)) это не на Джуна ,а на стажировку
@Murrengan
@Murrengan 3 года назад
рр
@encrypted_pig731
@encrypted_pig731 4 года назад
Третья задача: def largest_number(number): return int("".join(["9" for x in range(number)]))
@Murrengan
@Murrengan 4 года назад
четко!
@someone_music
@someone_music 5 лет назад
Хотел блеснуть умом, начал писать комментарий, но после твоего открытия функции я перестал писать, ибо там было тоже самое :)
@Murrengan
@Murrengan 5 лет назад
Великие умы мыслят одинаково?) Попробуй найти новое решение
@travelanthony23
@travelanthony23 Год назад
*ТРЕТЬЯ ЗАДАЧА* some_digit = int(input()) def func(some_digit): res = '' for i in range(some_digit): res += '9' return int(res) print(func(some_digit))
@igortheoverlord4960
@igortheoverlord4960 2 года назад
Первая задача def _(*args): x = sorted(args[0]) if x == list(set(x)): return False else: return True
@lgp690optimuslink
@lgp690optimuslink 4 года назад
3 задача: def largest_number(some_digit): return "9" * some_digit some_digit = int(input()) result = largest_number(some_digit) print(result)
@Murrengan
@Murrengan 4 года назад
зачет! Просто красавец! =)
@sanyakrt8190
@sanyakrt8190 2 года назад
try: return int('9'*num) except (ValueError, TypeError) : return 'No'
@ilyajay2186
@ilyajay2186 4 года назад
Ошибка: при создании множества (set) python распологает елементы по хитрому алгоритму, который позволяет быстрее находить значение и, соответственно, быстрее работать с массивом.
@Murrengan
@Murrengan 4 года назад
четко подмечено =)
@Channel-kp7qo
@Channel-kp7qo Год назад
Except вернут фразу при любом ошибке, а нам надо чтобы вернуло фразу только при получении dict! Лучше бы сделать if type(some_number) != dict: pass else: return "Че, самый умный?"
@MoscowMyLife
@MoscowMyLife 5 лет назад
Вопрос по 2-й задаче: У вас: result += int(str(some_digit)[digit]) а разве some_digit надо писать? Может some_number, т.к. это является аргументом в функции sum_of_digits? Или это я, ошибаюсь?)
@Murrengan
@Murrengan 5 лет назад
все верно - мы получаем цифру из входящего параметра) возможно, есть более оптимальное решение?
@igortheoverlord4960
@igortheoverlord4960 2 года назад
Вторая задача def _(args): if not isinstance(args, int): return "че самый умный" else: return sum(list(map(lambda c: int(c), str(args))))
@user-vq9ey8pk1n
@user-vq9ey8pk1n 4 года назад
number = input('Input a number: ') try: print(sum(int(i) for i in list(number))) except Exception as ex: print(f'{ex}')
@Murrengan
@Murrengan 4 года назад
👍
@user-bt8sy9jy4j
@user-bt8sy9jy4j 5 лет назад
вторая задача, используя лист коприхеншн r = "вводите значение" [print("Че, самый умный?") if not type(r) is int else print(sum([int(x) for x in str(r)]))]
@user-yq9zf6qb2o
@user-yq9zf6qb2o 5 лет назад
Очень сложно
@user-bt8sy9jy4j
@user-bt8sy9jy4j 5 лет назад
@@user-yq9zf6qb2o ,. нормально )
@user-rw9he4qi7m
@user-rw9he4qi7m 4 года назад
@@user-bt8sy9jy4j На самом деле нет, не нормально. Вы допускаете типичную ошибку новичка, когда пытаешься сделать код или в одну строку или как можно короче. Это не всегда полезно и как в данном случае просто приводит к не читаемости кода. Программисты редко работают одни и лучше потратить лишних пару секунд, но сделать код читаемым, ведь его могут смотреть и другие люди. def sum_of_digits(number): if isinstance(number, int) return sum([int(numb) for numb in str(number)]) else return 'Error, need number!'
@user-bt8sy9jy4j
@user-bt8sy9jy4j 4 года назад
@@user-rw9he4qi7m Здравствуйте, я не хотел использовать данный код для того чтобы учить других, на самом деле я просто сделал решения в другом виде, которое возможно в python. Я не использую такие методы при работе в проекте. Ибо это мешает моим коллегам, просто выполнил вызов Егора )
@ArtFoX1000
@ArtFoX1000 4 года назад
@@user-bt8sy9jy4j Используя List comprehensive ты делаешь лишнюю операцию в функции sum(). Функция sum умеет работать c "Generator" comprehensive, что уместно в контексте твоего кода.
@yaroslavlakaev1038
@yaroslavlakaev1038 2 года назад
🖖 check_uniq = lambda array: len(array) != len(set(array)) sum_n = lambda num: sum([int(c) for c in str(num) if type(num) == int]) or 'Чё, самый умный чтоль?' max_num = lambda count: int(count*'9')
@user-xf4wg4lh3n
@user-xf4wg4lh3n 4 года назад
Вторая: some_digid = 55 def count_sum(): result = 0 for i in str(some_digid): result += int(i) print(result) count_sum()
@Murrengan
@Murrengan 4 года назад
красава!
@vladyslavstadnyk2762
@vladyslavstadnyk2762 3 года назад
довольно лаконично в первой задаче получилось. А нельзя было во второй задаче просто занести все символы в список, а на него уже накинуть sum? вроде ж лучше чем вручную плюсовать Тогда функция была бы в одну строку) return sum([i for i in text]) upd: Досмотрел, услышал вопрос про list comprehention. Ну лан, зря быканул)
@alexmiller6844
@alexmiller6844 Год назад
Ne nuzhen zdes' list comprehesion. Pravil'no - cherez generator expression: return sum(int(c) for c in str(n))
@whatwho9235
@whatwho9235 5 лет назад
1) def double(example): newExample = set(example) if len(newExample) != len(example): return True return False 2) lst = [] def count(number): if number.isnumeric(): number = str(number) for ch in number: lst.append(int(ch)) return sum(lst) else: return 'So clever?' 3)def largestNum(num): return '9'*num Что у тебя за редактор?
@Murrengan
@Murrengan 5 лет назад
good job! ide pycharm
@ch4ttxbyn
@ch4ttxbyn Год назад
2 задача: def sumOfDigits(number): output = 0 try: for num in str(number): output += int(num) return exit except ValueError: return 'че самый умный?' 3 задача: def largest(digit): return int('9' * digit)
@Panda-de8dd
@Panda-de8dd 2 года назад
А вот и мое решение 😅: 1. Мой код получился слишком длинным с if else 2. a=input () If a.isdijit(): s=(int(a)// 10) +(int(a)%10) print (s) else: print ('только цифры')
@sherlockholmes5736
@sherlockholmes5736 3 года назад
1. def contains_dublicates(example_list): return list(set(sorted(example_list))) != sorted(example_list) 2. def sum_of_digits(some_number): res = [i for i in str(some_number)] r = list(map(int, res)) return sum(r) 3. def latgest_number(some_digit): return int('9' * some_digit)
@Murrengan
@Murrengan 3 года назад
неплохо
@kol4an721
@kol4an721 Год назад
3 задачка: a = ["7"*i for i in range(1, 5)] print(a[3:])
@travelanthony23
@travelanthony23 Год назад
*ВТОРАЯ ЗАДАЧА* def simp(n): n1 = str(n) n1 = list(n1) n1 = list(map(int, n1)) return sum(n1) try: n = int(input()) if n > 0: print(simp(n)) except ValueError: print('Че, самый умный?')
@user-ht9vw9gp5b
@user-ht9vw9gp5b 4 года назад
def sum_dig(number): ...: if isinstance(number, str): ...: return 'go away' ...: return sum([int(n) for n in str(number)]) было не?
@Murrengan
@Murrengan 4 года назад
четкая проверка =))
@viper_0097
@viper_0097 3 месяца назад
7:19 Решение на С++: #include "string" int sum_of_digits(int num) { std::string num_str = std::to_string(num); int answ = 0; for(short i = 0; i != num_str.length(); ++i) answ += (num_str[i] - 48); return answ; } И что это за "сила" питона, не пойму. тоже самое есть в C++. 48 - это номер символа "0" в таблице ASCII, а char - это целочисленный тип. следовательно, отняв 48, мы получим реальное значение цифры. "Чё самый умный" писать не нужно, потому что даже если захочет пользователь, он не сможет передать туда строку.
@user-ro5qj9vf6y
@user-ro5qj9vf6y 4 года назад
Пытаюсь найти работу хотя бы стажером, но даже там нет таких простых задачек, может я не там ищу?)
@Murrengan
@Murrengan 4 года назад
не - просты ты красавчик =)
@EpicLifePlaysWot
@EpicLifePlaysWot 4 года назад
Вторая задача: def sum_of(sum_num): list_num_str = list(str(sum_num)) return sum(list(int(v) for v in list_num_str))
@Murrengan
@Murrengan 4 года назад
четко =)
@iptashR
@iptashR 3 года назад
Если результ, тогда и нумбер уж )
@Murrengan
@Murrengan 3 года назад
=)
@nemoshabat880
@nemoshabat880 Год назад
решение последней задачи a = 3 def largest_number(num): return int('9' * num) print(largest_number(a))
@user-py2xx9mr3f
@user-py2xx9mr3f 4 года назад
А как можно сразу 2 лайка поставить ?
@mjeday
@mjeday Год назад
Задача 2: def summer(value): if isinstance(value, int): return sum(map(int, str(value))) else: return 'Чо самый умный?' Задача 3: def max_count(num): return int('9' * num) (возводить в степень большие числа очень трудозатратно, оптимальнее умножить строку и преобразовать к инту) Ну и на собеседовании нет таких задач. Это уж очень элементарное все и решается в уме за 10 секунд.
@semion.shandruk
@semion.shandruk 2 года назад
resЮlt)
@bogger_
@bogger_ 4 года назад
sum_digits = [int(s) for s in input()] print(sum(sum_digits)) А ещё try и except слишком дорогая операция и лучше сделать через .isdigit
@Murrengan
@Murrengan 4 года назад
четко =)
@bogger_
@bogger_ 4 года назад
@@Murrengan Спасибо, учусь)
@vitalik100500q
@vitalik100500q 3 года назад
Он передавал в первом случае инт, во втором дикт, isdigit в обеих случаях выдаст ошибку, это метод строки
@user-rq2tq1uv7g
@user-rq2tq1uv7g Год назад
def aut(ss): return len(ss) != len(set(ss)) def aut(n): count = 0 while n % 10 != 0: count += n % 10 n = n // 10 return count
@user-rp5mq7bi4m
@user-rp5mq7bi4m 5 лет назад
def get_dublicate(lst): return len(lst)==len(set(lst))
@Murrengan
@Murrengan 5 лет назад
мммм =)
@Yaroslav_Rushechnicov
@Yaroslav_Rushechnicov 5 лет назад
someNumber = 254 def sum_of_digits(inputDigit): strGigitsList = list(str(inputDigit)) digitList = map(int, strGigitsList) return sum(digitList) print(sum_of_digits(someNumber))
@Murrengan
@Murrengan 5 лет назад
Четко!
@user-zk3uo3ti6f
@user-zk3uo3ti6f 4 года назад
А зачем list, если string тоже iterable?
@alexanderkramskoy7701
@alexanderkramskoy7701 2 года назад
Последнюю задачу решил так: def largest_number(some_digit): return int(str('9'*some_digit))
@Murrengan
@Murrengan 2 года назад
норм
@leagueofroxy
@leagueofroxy 5 лет назад
первая def contains_dublicates(list): if len(list) == len(set(list)): return True else: return False
@leagueofroxy
@leagueofroxy 5 лет назад
мда на три строчки больше
@leagueofroxy
@leagueofroxy 5 лет назад
вторая def sum(num): if not isinstance(num, int): return ''че самый умный" else: sum = 0 for digit in str(num): sum+= int(digit) return sum
@Murrengan
@Murrengan 5 лет назад
good job!
@user-ed3uu2lx9v
@user-ed3uu2lx9v Год назад
Из числа в строку и наоборот это indian way. a=12212151545412151 ​ def sum_of_digits(n:int)->int: ​ ​ def _next_digit(n:int)->int: ​ ​ ​ ​ while n>0: ​ ​ ​ ​ ​ ​ d = n%10 ​ ​ ​ ​ ​ ​ n = int(n/10) ​ ​ ​ ​ ​ ​ yield d ​ ​ ​ ​ return ​ ​ return sum(list(_next_digit(n))) ​ print(sum_of_digits(a)) Я бы так сделал, парсинг числа занимает много времени и не оптимален поэтому его надо исбегать.
@unrevealedunrevealed118
@unrevealedunrevealed118 3 года назад
Вторая задача: Если решать без sum(), .isnumeric(), или .isdigit() def addition(n): try: n = int(n) allsum = 0 while n != 0: s = n % 10 allsum += s n //= 10 return allsum except: return 'Нужно ввести число!' print(addition(input()))
@000ProstoFan000
@000ProstoFan000 4 года назад
2. return sum([int(i) for i in list(str(nums))])
@Murrengan
@Murrengan 4 года назад
красава!
@kvizzyt7548
@kvizzyt7548 4 года назад
Я вторую задачу так решил number = input('Введите число: ') if not number.isdigit(): print('Чё, самый умный?') else: print(sum([int(i) for i in number]))
@Murrengan
@Murrengan 4 года назад
четко)
@yanchuprakov3595
@yanchuprakov3595 2 года назад
Во второй задаче try - except не оптимальное решение, лучше использовать ранний выход def sum_digits(n: int): if not isinstance(n, int): return 'Че, самый умный?' return sum([int(s) for s in str(n)])
@Murrengan
@Murrengan 2 года назад
красава
@user-hl3gt8hk6x
@user-hl3gt8hk6x 4 года назад
def sum(x): try: sum = 0 for i in x: sum += int(i) print(sum) except: print('Дурачок') sum('90009') Out: 18 sum('ak47') Out: Дурачок
@takiekakmi7532
@takiekakmi7532 3 года назад
В set() лежат элементы не в случайном порядке! Как могут лежать элементы в случайном порядке в бинарном дереве?????)))) (lambda list : sum([x for x in list])) на второй вопрос - вродь так
@Murrengan
@Murrengan 2 года назад
нормас - красава
@paul_wiggin
@paul_wiggin 4 года назад
Задача 1. Вижу пару вариантов: 1. Сортировка значений с последующим сравнением соседних элементов между собой. 2. замерить длину списка и сравнить с длинной множества сделанного из этого списка. Какой из них быстрее - не знаю. Потенциально полезным побочным продуктом первого является упорядоченный список. Задача 2. def digits_sum(n): try: n = int(n) ans = 0 while n != 0: s = n % 10 n //= 10 ans += s return ans except ValueError: return "Чё? Самый умный?" except TypeError: return "Чё? Самый умный?" ------------------ Про list comprehensions слышу впервые.. я пайтоном пару недель занимаюсь, а не месяцев. Задача 3. реализация через строки. def some_digit(n): s = "" for i in range(n): s += "1" ans = 9 * int(s) return ans Через арифметику: def some_digit(n): ans = 10**n - 1 return ans кому как больше нравится.. А теперь вопрос: Если я без труда решаю подобные задачки, значит ли это что мне можно идти устраиваться на работу?
@Murrengan
@Murrengan 4 года назад
Красава! Да - иди устраивайся - если что-то не знаешь - на месте выучишь =)
@user-gq9ez5xt5w
@user-gq9ez5xt5w 3 года назад
task 2 def sum_digits(number): return sum(int(x) for x in str(number)) if isinstance(number, int) else None
@user-qt1sv4hb5m
@user-qt1sv4hb5m 4 года назад
>>> def f(l): ... if len(l)!=len(set(l)): ... print('yes')
@user-qt1sv4hb5m
@user-qt1sv4hb5m 4 года назад
угадал)
@Murrengan
@Murrengan 4 года назад
четко)
@technocolortm9075
@technocolortm9075 3 года назад
Я последнюю задачу так решил: def test(x): res = int('1' + '0' * x) return res - 1
@Murrengan
@Murrengan 3 года назад
норм: но есть лучшее решение в комментах
@user-yv5fi3rx8k
@user-yv5fi3rx8k 3 года назад
Смешно)
@gahabool9173
@gahabool9173 Год назад
2 задача: def sum_of_digits(num): count = 0 for i in range(len(str(num))): count += int(str(num)[i]) return count try: print(sum_of_digits(int(input()))) except ValueError: print('Че самый умный?') БОНУС: def some_digit(num): return '9' * num print(some_digit(int(input())))
@neuro_arts
@neuro_arts 3 года назад
def a(nm): nm = str(nm) if nm.isnumeric(): z = sum([int(i) for i in list(nm)]) return z else: return "WTF???"
@juchi8572
@juchi8572 4 года назад
проще 2 задание some_digit = 5555 result = 0 for digit in str(some_digit): result += int(digit) print (result)
@Murrengan
@Murrengan 4 года назад
четко!
@dmitirymulyakov6663
@dmitirymulyakov6663 4 года назад
Но это не функция, а требуется функциональное, а не империональное решение!!!
@unrevealedunrevealed118
@unrevealedunrevealed118 3 года назад
Третья задача: print(int('9' * int(input())))
@Murrengan
@Murrengan 3 года назад
норм
@Pavel_Burov
@Pavel_Burov 3 года назад
Третья задачка Number = 3 Dlina = int(len(str(number))) Print(dlina*9)
@Murrengan
@Murrengan 3 года назад
должно работать - выглядит отвратительно
@maximcode634
@maximcode634 3 года назад
Solution for the second problem set in C: #include int main(void) { long number; int sum_of_digits; printf("Enter number: "); if (scanf("%lu", &number) == 1) { for (int i = number; i != 0; i /= 10) { sum_of_digits += i % 10; } printf("%i ", sum_of_digits); } else { printf("Huh? Are you a Know-it-All? "); } }
@Murrengan
@Murrengan 3 года назад
много кода - бери питон -)
@fixzzz111
@fixzzz111 Год назад
Вторая задача с проверкой меньше 4 строк не вышла. У кого-нибудь с проверкой получилось короче 4 строк с list comprehension без нарушения читаемости кода? Мой вариант: def sum_of_digits(some_number): try: return sum([int(digit) for digit in str(some_number)]) except: return 'Че, самый умный?'
@SmarterMiner
@SmarterMiner 4 года назад
Последнее задание через str a = int(input()) b = '9' def sum(number): c = str(a) print(b*a)
@Murrengan
@Murrengan 4 года назад
четко!
@olehburian9328
@olehburian9328 Год назад
Номер два def sum_digits(num): return sum(int(i) for i in str(num)) if type(num) == int else 'Че, самий умний!'
@user-bt8sy9jy4j
@user-bt8sy9jy4j 5 лет назад
третья задача print(int("9"*int(input())))
@Murrengan
@Murrengan 5 лет назад
good job!
@user-bt8sy9jy4j
@user-bt8sy9jy4j 5 лет назад
@@Murrengan , th. bro
@x-neimi4493
@x-neimi4493 5 лет назад
Также сделал)
@axlmal6980
@axlmal6980 Год назад
return [sum(int(i) for i in str(digit))][0]
@rostislavmalyshev1775
@rostislavmalyshev1775 3 года назад
В начале видео -"написать какие либо тесты..". Так надо было то , что написано словами в комментах в unittest засунуть. Работодатель офигел бы от такого уровня компетенции :), а новичкам тесты как раз на таких примерах и разбирать.
@Murrengan
@Murrengan 3 года назад
что?
@senya_senechkin
@senya_senechkin 3 года назад
> к сожалению, мы не можем найти длину числа можем. но функцию придется писать самому. например так: def len_number(number): ____len_number = 1 ____while number >= 10: ________number //= 10 ________len_number += 1 ____return(len_number) в жизни не поверю, что такие задачи реально дают джунам. их может решить человек, который неделю позанимался на любом бесплатном курсе.
@Murrengan
@Murrengan 3 года назад
посмотри другие рещшения в комментах - есть более секси решения
@senya_senechkin
@senya_senechkin 3 года назад
@@Murrengan это не решение, а поправка. найти длину числа можно и не приводя его к строке
@vadimganin5678
@vadimganin5678 2 года назад
Вот как можно решить 3 задачу: some_digit = 4 def max_value(some_digit): maximum_value = "9" * some_digit print(int(maximum_value)) max_value(some_digit)
@dmitirymulyakov6663
@dmitirymulyakov6663 4 года назад
def list_comprehension(digit) : return sum(map(int,list(str(digit)))) if type(digit) is int else "Чё, самый умный? "
@vitalik100500q
@vitalik100500q 3 года назад
Принципиально не читаемая хуйня
@firewatch123
@firewatch123 2 года назад
num = int(input("Enter a num: ")) sum = 0 if num == type(int): print("ymniy samiy?") else: while num != 0: sum += num % 10 num = num // 10 print(sum) я наверное не так понял и попросил пользователя ввести
@Murrengan
@Murrengan 2 года назад
ррр р есть более красивые решения в комментах
@synthwave9292
@synthwave9292 4 года назад
def cd(ex_list): return False if len(ex_list) == 0 else (True if len(ex_list) == len(set(ex_list)) else False)
@Murrengan
@Murrengan 4 года назад
шикк! буду тестить!
Далее
КРУТОЙ ФОКУС С ШАРАМИ
00:35
Просмотров 113 тыс.
Лайфхак с колой не рабочий
00:16
Просмотров 275 тыс.
Кто понял тот понял
00:24
Просмотров 138 тыс.