1) Плейлист этого курса вот здесь: ua-cam.com/play/PLAma_mKffTOSY12JZS6l8lxKCpooPVcrn.html 2) Не обязательно использовать Jupyter Notebook. Можно использовать любую другую IDE, например PyCharm - www.jetbrains.com/ru-ru/pycharm/ Telegram: t.me/alishev_g Курс по GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E
Со второй задачей, где нужно было посчитать слова - не сразу понял задание. Под посчитать слова я сначала подумал, что нужно просто посчитать кол-во слов, то есть например если их суммарно 16, то нужно это выяснить. Когда начал смотреть решение, понял, что что-то не так сделал. По первым словам решения подумал, что нужно создать словарь, в котором у каждого нового слова будет свой номер, и нужно посчитать кол-во уникальных слов. Сделал. И это было снова не то :D Было бы неплохо объяснить необходимый результат на примере, чтобы видеть, что должно получиться
Ты ни один такой. Я тоже подумал про общее количество my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет' print (my_text.split()) len (my_text.split()) p= len (my_text.split()) print ('В этом списке ' + str(p) + ' cлов' )
Ход моих мыслей был абсолютно идентичен твоему) Сделав задание по первому сопособу подумал, не омжет же быть так просто да и словарь тут не нужен, начал смотреть решение, подумал, видимо нужно посчитать количество уникальных слов - spl_text = my_text.split() set_txt=set() for f in spl_text: f2=f.lower() set_txt.add(f2) print (set_txt) print ('В тексте ' + str(len(set_txt)) + ' уникальных слов') Но все равно не понятно, причем тут словари? Смотрю дальше, а оказывается нужно было посчитать количество повторений слов...
Спасибо за старание! Уважение и огромная благодарность😊 Сказать что тяжело, это ничего не сказать))) Ву блин, задачки конечно эти сложные. Реально, без просмотра не получается. А после просмотра вроде элементарно. Тяжело одним словом). Тернистым будет путь чувствую)))
Довольно забавные ощущения, имеется небольшой опыт в других языках программирования. Начинаешь решать все сам, делаешь все красиво. Чувство гордости все дела ) Потом открываешь решение и понимаешь что можно было сделать в 2 строчки и не вводить лишние переменные или циклы итд. Очень познавательно и интересно. Спасибо что каждый раз получается понять что то новое!
Спасибо огромное за уроки! С первой задачей возникли трудности, но алгоритм выполнения задачи на листе изложил верно, а вот написать программу не хватило знания синтаксиса, хотя мысли были такие как в вашем решении. Вторую задачу решил практически сразу, (первым способом), но возникли трудности, опять же, не мог понять как в словаре поставить ЗНАЧЕНИЕ +1. Перепробовав множество вариантов ( и почему-то так и не воспользовавшись знанием с прошлых уроков( +=)) я обратился к гуглу и был расстроен узнав, что все намного проще чем я думал. Респект за труды!
20:48 немного не честные условия. Я решил задачу немного другим способом, не знал что можно сразу добавлять через append в словарь ключи, поэтому сделал через две временные переменные, которые потом добавлялись как пара ключ-значение.
А я понял вторую задачу неправильно))) Подумал, что нужно подсчитать просто количество слов и сильно удивился, когда ты назвал её сложной, ибо же там всё вот так должно быть: print(len(my_text.split())). И только потом допёр, что надо было подсчитать количество повторений каждого слова)))
Наиль, привет! Спасибо большое за уроки, они правда стоящие! Действительно, второе задание не совсем корректно дано и я, как многие, просто подсчитал len, глупо радуясь быстрому успеху...)))
Решение задачи номер 1 как я вижу. Теперь буду смотреть как надо было решать) a=["first", 1, 2, 3, "second", 10, 20, "third", 5, 56, 70, "fourth", -54] d={} m=[] x=len(a) for i in a: if type (i) == str: b = i m.clear() if type(i) == int: m.append(i) d[b]=m[:x] print (d)
интересное решение задачи через цикл for,я не додумался бы,думал надо сделать с вложенными циклами,но тоже не догнал как)) в итоге решил так: a = ['first', 1, 'second', 10, 20, 'third', 30, 40, 50, 'fourth', 15, 25, 45, 21] b = ['first', 'second', 'third', 'fourth'] c = [[1], [10, 20], [30, 40, 50], [15, 25, 45, 21]] print(dict(zip(b, c)))
Слушай, я 2 задачи решил через цикл в цикле )))) Но твое решение по задачам конечно выглядит элегантнее ) Хоть мое и не такое изящное - но рад что сам решил без подсказки твоей :) И да - решение второй задачи я ещё не посмотрел :)
Да, со второй задачей - не правильно, или даже не точно был задан вопрос. Нужно было наверное сказать - сколько каждого слова в списке. А то я так же как и многие (судя по отзывам) посчитал общее кол-во слов и уникальных слов )
Помогите разобраться, в задаче с определением количества слов не понял. написали цикл for word in my_text.split(): if word in my_dict2: - почему здесь то проверяем наличие слова в словаре my_dict2, он же ведь еще пустой?
Вторая задача, решение с использованием set() - множество. text = 'никогда не поздно быть тем кем ты мог бы быть никогда не поздно быть тем кем ты мог бы быть' words = text.split() # создаем переменную и присваиваем ей массив со всеми словами из текста set_words = set() # создаем пустое множество for w in words: set_words.add(w) # помещаем слова в set_words (в set() нельзя поместить одинаковые элементы) print(len(set_words)) # выводим количество элементов в множестве set_words >> 9
#потратил не меньше 4-х часов на решение, задача была не из легких (особенно когда не знал как в 1 значении иметь от 1-го значения , и то где хранить данные ) a = ["first", 1,2,3,4,5,"second",7,8,9, "thir",11,12,13,"fur",15,-16] #сюда можно добавлять слова в зависимости от вместимости словаря i = 0 b = 0 x = 0 v = 0 m = 0 n = {} z = ["q","w","e","r","t","y","u","i","o","p"] #вместимость словаря print ("вместимость словаря :",len(z)-1,"слов") while m < len(a) : while i < len(a) and type (a[i]) == str : z[x] = [] n[a[i]]=z[x] i +=1 while i < len(a) and type(a[i])==int : z[x].append(a[i]) if i < len(a): i +=1 else: break
x +=1 m +=1 print (n["first"])#поиск по имени print (n )# полный словарь
Задание сложное, новичкам как мне усвоить бы как вы его решаете в этом видео, не то чтобы самому догадаться как нужно его решить.. Логика в целом понятна, но детали.. и самому о них догадаться мне лично пока крайне затруднительно было бы.
Да, согласна. Конечно, возможно автор хочет чтобы мы ами нашли информацию в интернете, но тут бы основы выучить и понять. У меня лично с цикла while пошла неразбериха в задачах
28:00 Может кто-то мне объяснить, пожалуйста, почему в коде написано "if word in my_dict2: ...." . Как я понял, это означает:" Если в my_dict2 есть word, то что-то произойдёт. Но на этот момент же my_dict2 пустой. Или я баран и что-то не понимаю? Спасибо
Понимаю что я сделал не правильно, но по другому не разобрался) d = {'first': [1 , 2, 3], 'second':[10,20], 'third':[15, 56, 70], 'fourth':[-50] } print(d)
нет, он так обучает. дает задачу, говорит что ранее все что нужно для решения он рассказал, начинает писать код и там половину нового......а я ломал голову полчаса.......
нет, мне тоже не понятно. но мне сказал сам автор и еще знакомый из айти, что это всегда так будет) ощущение что ты ничего не понимаешь, а вокруг все такие умные. просто продолжай и все)
чтобы более менее ориентироваться в его уроках порешай интерактивную(если включить пошаговое выполнение кода, то будешь видеть как код ведет себя не каждом этапе) штуку: pythontutor. будет небольшой бэкграунд - будешь воспринимать более менее информацию.
alishev здравствуйте! Если можете помогите пожалуйста мне с задачей, я написала код, но не знаю как сделать так чтобы выводились только порядковые номера кратные 3 Создать файл и записать в него обратные натуральные числа 1, 1/2,...,1/n. Вывести на экран все компоненты файла с порядковым номером, кратным 3. На пайтон. Я все в коде написала только вот не могу сделать там чтобы он выводил компоненты из файла с порядковым номером кратным 3, он у меня все выводит.... import pickle ask = "user.dat" n = float(input("n=")) with open(ask, "wb") as f: s = 1; while s
Решил 1 задачу начиная с конца списка, может кому интересно a = ['first', 1, 2, 3, 'second', 10, 20, 'third', 44, 543, 333,'fourth', -50] d = {} e = {} b = [] for i in range (len(a)-1,-1,-1): if type(a[i]) == int: b.append(a[i]) else: d[a[i]] = b[::-1] b = [] c = list(d)[::-1] for i in range (len(c)): e[c[i]] = d[c[i]] print(e)
посидел над первой задачей часа 3-4. Какие только словари у меня не получались)))) И мешало мне именно то, что я не мог создать переменную без значения и то, что я долго думал, как же добавить в значение к ключу несколько элементов. Хоть убей все прошерстил, но забыл про урок list и упорно его глазами не замечал
Спасибо за прекрасные уроки! Условие второй задачи действительно не чётко обозначено. Но она далась легко, а первая... мне было сложно, скажу честно подсмотрела решение.
Для первой задачи автор предлагает найти решение, которое "должно работать с любыми исходными списками" (14:07). Но решение, которое предлагает автор, работает не со всеми списками! Например, если в списке перед "first" поставить числа, то код не будет работать!
еще одно решение 1 задачи: a=['first', 1,2,3, 'second', 4,5,6,7, 'third', 1,43,2] c={} b=[] for elem in a: if type(elem)==str: b.clear() v=elem if type(elem)==int: b.append(elem) c[v]=b print(c)
Вот чего добился я, в конце попахивает Hard cod-ом но работает при любых значениях. ЭТО МОЙ ПУТЬ! d = {} t = [] j = 0 q = 0 for i in range(len(a)-1): if type(a[j]) == str: d[a[j]] = 1 t.append(a[j+1]) j += 1 else: if type(a[j]) == int and type(a[j-1]) == str: j += 1 else: if type(a[j]) == int and type(a[j+1]) == int: t.append(a[j]) j += 1 else: t.append(a[j]) d[a[q]] = t j += 1 q = j t = [] d[a[-2]] = a[-1] print(d)
a = ["first", 1, 2, 3, "second", 20, 30, "third", 15, 30] d = {} for element in a: if type("s") == type(element): key = element value = [] else: value.append(element) d[key] = value
Он им не стал, просто мы поставили сразу условие, если такого элемента НЕТ в словаре, то мы его достаем из листа как ключ, присваиваем ему значение и тогда он попадает и начинает создавать сам словарь.
Я немного не понял - задача 2 изначально звучит как - подсчитать количество слов в тексте. Это же считается len(my_text.split(" ")) А потом уже по ходу обьяснения решения выясняется что надо было посчитать количество слов и количество повторяющихся слов тоже!
вот решил иначе пока не знал что в словарь можно под ключом положить пустой список, всё это уже прошли list1 = ['first', 1, 2, 3, 'second', 20,30, 'third', 15, 56, 70, 'fourth', -50] my_dict = {} cont = None my_list= [] for i in list1: if type(i) == str and len(my_list) > 0: my_dict[cont] = my_list if type(i) == str: cont = i my_list = [] else: my_list.append(i) print(my_dict) ps. ребята думайте головой, над реализацией, на мой взгляд пусть она будет даже иной и более ёмкой, зато именно вашей. Далее легче будет въехать и понимать принципы, плюсы и минусы других решений, и юзать лучшие из них в последующих задачах.
Здравствуйте, в моменте 10:17 вывод: ключ - значение. Не легче было бы просто написать print("Ключ: ",key, " ,значение: ",value), без перевода переменных в тип str. Заранее спасибо!
Пишу свои решения, до просмотра решений в видео. П.С. (после просмотра решений) во второй задаче не слишком очевидно было, что нужно подсчитать количество именно "встреч" слова, задание звучало "подсчитать количество слов в тексте" , формально можно было обойтись одной строкой: print(len(mytext2.split())) . Но уже из логики дальнейшего разъяснения задания стало ясно, что подразумевается именно количество "уникальных" слов в тексте. ))) а то, как известно, без внятного ТЗ, результат - ХЗ # Первая задача d={} a=["first", 1, 2, 3, "second", 10, 20, 50, -20, 20, "third", 15, 56, 70, "fourth", -50, "fifth", 0] for i in range(len(a)): if type (a[i])==str: list=[] temp=i+1 while type(a[temp])==int: list.append(a[temp]) temp+=1 if temp == len(a): break d[a[i]]=list print(d) # Вторая задача (попытался в массиве дополнительно подсчитать количество повторений слов) mytext="Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет conob asdf fdfd asdf asdf" list=mytext.split() dic={} for i in list: num=0 if i in dic: num=dic[i]+1 dic[i]=num else: dic[i]=1 print (len(dic)) print (dic)
Привет. У тебя во 2й задаче (2й вариант), решение выводит правильно только потому что в памяти сохранён my_dict2(из предыдущего решения). Если создать новый словарь my_dict3, то выводит только пустые скобки. Проверил в отдельном файле и действительно решение не работает. В любом случае спасибо за уроки! Пример: my_text = "Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет" my_dict3 = {} for word in my_text.split(): if word in my_dict3: my_dict3[word] = my_dict3.get(word, 0) + 1
Как новичку первую задачу получилось решить только для конкретных данных. Понимаю, что задачка дается на подумать, но как-то очень неочевидно. На основе изученнего на канале ранее - точно бы не получилось дойти.
Не согласен с "На основе изученнего на канале ранее - точно бы не получилось дойти". Абсолютно все составляющие решения подробно освещались либо на этом уроке, либо в предыдущих. Я за этим отдельно слежу.
#просто для подсчета слов в строке или файле b = 'Пример текста для программы написанной на Питоне' v = len(set(b.split())) print(v) #или, но смотрите, чтобы в винде была галочка "показывать расширения файла", иначе он может у вас называться 123.txt.txt и интерпритатор его не найдет))) a = len(set(open(r'c:\temp\123.txt').read().split())) print(a)
Можно наверно покороче, но пока так a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50] x = {} # создаем пустой словарь for i in (a): # узнаем кол-во ключей if type(i) == str: x[i] = [] # добавляем ключи в словарь for key, value in x.items(): # заполняем значение (список) соотв. ключей for s in a: if key == s: # попадаем на нужное слово в списке a p = a.index(key) + 1 while type(a[p]) != str: value.append(a[p]) p += 1 if len(a) == p: # проверка чтобы не выскочить за пределы списка a break print(x) # {'first': [1, 2, 3], 'second': [10, 20], 'third': [15, 56, 70], 'fourth': [-50]}
я так замаслал: myList: list = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50] myMap: dict = {} # ключ слово а значение это список из значений | int, str key: str = "" value: int = 0 internalList: list = [] for element in myList: if (type(element) is str): key = element internalList = [] continue elif (type(element) is int): value = element internalList.append(value) myMap[key] = internalList print(myMap) # {'first': [1, 2, 3], 'second': [10, 20], 'third': [15, 56, 70], 'fourth': [-50]}
Мой, более длинный вариант решения второй задачи # Задача 2 (посчитать кол-во слов в тексте) text = 'привет Привет пока арбуз код кот ручка чат слово ещё слово слово слово слово слово слово слово слово' slova = text.split(' ') d_slova = {} temp = 0 for e in slova: if e in d_slova: d_slova[e] = d_slova[e] + 1 else: d_slova[e] = temp temp += 1 dlina = len(d_slova) print(dlina) print(d_slova)
d2={'привет':20, 'пока':10} if 'привет' in d2: print('yes') else: *error* *SyntaxError* : unindent does not match any outer indentation level что это за ошибка и как ее решить? пишу в idle python 3.9.0 shell
Не очень понял, как работает .append для словаря. Можете объяснить пожалуйста логику работы этой функции? Логику добавления в обычный список понял, там всё просто.
почитал комментарии, вроде понял суть задания, но решение, опять-таки, далеко от изящности... my_text = "Иду работать работать работать чтобы потом не работать и тупа кайфовать тупа атдыхать атдыхать работать" a = my_text.split() d = {} for i in range(len(a)): counter = 0 for j in range(len(a)): if a[i] == a[j]: counter += 1 d[a[i]] = counter print(d)
Задача - Посчитать сумму не повторяющихся слов вместе с пробелами my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет' list_text = my_text.split() list_for_sum = [] for w in list_text: if w not in list_for_sum: list_for_sum.append(w) sum_words_space = len(list_for_sum) + len(list_for_sum) - 1 print(sum_words_space) Ответ - 19
28:20 не понятно объяснение. Многие простые вещи объясняешь по многу раз, а вещи посложнее или не явные объясняешь по одному разу или не объясняешь вообще. my_dict2[word] = my_dict2[word] + 1 "мы обращаемся по тому числу которое уже лежит по этому слову"... что?? Выглядит строка либо как добавление ключ:значение в словарь (причем ключ это слово из списка, а значение это это же слово +1), либо меняем слово из списка на это же слово + единица. Бред... Короче лезть гуглить. А когда найду там объяснения и описания всех вопросов - нахрена мне возвращаться сюда?
Я запутался. Есть команда if e in my_dict: НО словарь my_dict пустой! как переменная 'e' пожет проверить пустой словарь и найти там нужное слово? И ещё страннее то, что команда добавляющая в my_dict переменную 'e' идёт уже после условия. Как так происходит? Объясните логику.
for e in a: - строка, а не "my_dict". То есть, сначала, берется первый член из списка "а" - "first" и определяется его тип. Если тип str, то добавляется в словарь my_dict. Потом берется второй член из списка "а" - "1", его тип не является "str" поэтому отрабатывается блок else, по которому к созданному ранее ключу добавляется значение. И т.д. Мне самому непонятно только одно, как распознается программой, что результат блока else определяется на место значения. Почему не ключа?
Как я понял ты о второй задаче. По идее переменная "е" проверяет словарь, в котором изначально ничего нет, пропускается первое условие, потому что проверяемого слова там точно нет, и выполняется второе, когда слову присваивается единица. Если следующим будет такое же слово, то выполнится первое условие, по которому к единице из предыдущего цикла прибавляется ещё единица. Получается слово встречается два раза, и в списке значение ключа тоже будет 2. Если слово будет другим, то цикл повториться снова со второго условия.
Вот как я решил) 1я задача: l = ['first', 1, 'second', 1, 2, 4, 8, 'third', -3, 5, 11, 'fourth', 1, 6, 99, -111, 0, 15, 'fifth', 0, 1, 5, -1] d = {} for i in l: if type(i) == str: const = i l1 = [] else: l1.append(i) d[const] = l1 print(d) 2я задача: s = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет' d = {} for i in s.split(): d[i] = s.count(i) print(d)
вторая задачка не совсем верно, так как если в тексте будет скажем слово "дар' он покажет что слово да есть 2 раза хотя там только 1. он делит текст на буквы и отсекает все остальное. то есть при наличие ЭдаЭ в любой части слова, т.е. если там будет слово всегда он сделает +1 к слову да
В первой, если список кончиться на строке, она не будет внесена в словарь, так как второе условие не исполниться. Так что правильнее как в видео, т.к логика кода схожа я зделал иначе немного d={} for e in range(len(a)): c =[] if type(a[e]) == str: i = e + 1 while i
Добрый день Хочу воспользоваться подсказкрй в моей конкретной задаче. Задаче в том, чтобы создать цикл который будет по требованиям создавать словари с ключами и значениями в общем словаре. Пример Есть словарь GORODA ={} В него нужно помещать другие словари с именами городов Например MOSCOW {} С ключем "POPULATION" и значением 12000000: Пользователь должен по запросу вводить имена городов как ключи и вводить соответствующие значения. По завершении написать 'NO' и цикл закончится и выведет словарь с ключами и значениями введённых городов. Спасибо большое надеюсь понятно изложил. Прошу хелп.
my_text = "привет пока как дела привет арбуз велосипед стол как слон арбуз да привет" slova = my_text.split() d = {} for e in slova: a = 0 for p in slova: if e == p: a += 1 d[e] = a print(d)
Во втором задании постановка задачи отличается от решения. Ещё не совсем понял - ключи же могут быть только уникальными. Как вообще можно построить словарь на основе повторяющихся ключей? Я на задачу по переименованию повторяющихся слов в строке потратил пару часов
для меня легче вот так сделать: my_dict = {} current_str = None for e in my_list: if type(e) == str: current_lst = [] my_dict[e] = current_lst current_str = e else: current_lst.append(e)
1) Плейлист этого курса вот здесь: ua-cam.com/play/PLAma_mKffTOSY12JZS6l8lxKCpooPVcrn.html
2) Не обязательно использовать Jupyter Notebook. Можно использовать любую другую IDE, например PyCharm - www.jetbrains.com/ru-ru/pycharm/
Telegram: t.me/alishev_g
Курс по GIT: www.udemy.com/course/git-alishev/?referralCode=71994763964B8E2E6A4E
Если бы жизнь была Python- ом , то я в ней был бы pass-ом
Превосходный паттерн изложения: Теория -> Задача -> Пауза -> Анализ решения задачи. Спасибо! Вы, как и всегда, на высоте!
Самый лучший урок это практика. Хотелось бы каких либо супер лёгких задачек.
да не то слово)
@D1en я аналогично как и вы не могу понять туго как то прямо
Чувствую себя отсталым, но спасибо
ты не один такой
@@ackiid и вас даже ни два
@@vladimirvinogradov6815 множество тупых )))
@@ackiid нужно использовать список!)
@@vladimirvinogradov6815 и я с вами, хрен что поймешь с домашкой
Со второй задачей, где нужно было посчитать слова - не сразу понял задание. Под посчитать слова я сначала подумал, что нужно просто посчитать кол-во слов, то есть например если их суммарно 16, то нужно это выяснить. Когда начал смотреть решение, понял, что что-то не так сделал. По первым словам решения подумал, что нужно создать словарь, в котором у каждого нового слова будет свой номер, и нужно посчитать кол-во уникальных слов. Сделал. И это было снова не то :D
Было бы неплохо объяснить необходимый результат на примере, чтобы видеть, что должно получиться
Ты ни один такой. Я тоже подумал про общее количество
my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
print (my_text.split())
len (my_text.split())
p= len (my_text.split())
print ('В этом списке ' + str(p) + ' cлов' )
но по сути все верно, он дал задачу а ты решил даже больше, значит урок дал результат)
а каково условие второго задания в итоге? я тоже не понял, но решение смотреть не хочу, хочу сам сделать)
аналогично понял задание, автору спасибо, но ставить задачу нужно точнее ))
Ход моих мыслей был абсолютно идентичен твоему) Сделав задание по первому сопособу подумал, не омжет же быть так просто да и словарь тут не нужен, начал смотреть решение, подумал, видимо нужно посчитать количество уникальных слов -
spl_text = my_text.split()
set_txt=set()
for f in spl_text:
f2=f.lower()
set_txt.add(f2)
print (set_txt)
print ('В тексте ' + str(len(set_txt)) + ' уникальных слов')
Но все равно не понятно, причем тут словари? Смотрю дальше, а оказывается нужно было посчитать количество повторений слов...
list5 = ['first', 1, 2, 3,'second',10, 20,'third',15, 56, 70,'fourth', -50]
dict3 = {}
for vari1 in list5:
if type(vari1) == str:
el = []
dict3[vari1] = el
else:
el.append(vari1)
print(dict3)
Вот еще способ решения первой задачи, боле проще , как по мне
Классно! Очень классная подача, всё, действительно понятно! И отличная идея с задачей, решать её в видео после паузы!
Спасибо за старание! Уважение и огромная благодарность😊
Сказать что тяжело, это ничего не сказать)))
Ву блин, задачки конечно эти сложные. Реально, без просмотра не получается. А после просмотра вроде элементарно. Тяжело одним словом). Тернистым будет путь чувствую)))
Довольно забавные ощущения, имеется небольшой опыт в других языках программирования.
Начинаешь решать все сам, делаешь все красиво. Чувство гордости все дела )
Потом открываешь решение и понимаешь что можно было сделать в 2 строчки и не вводить лишние переменные или циклы итд.
Очень познавательно и интересно. Спасибо что каждый раз получается понять что то новое!
жиза
Спасибо огромное за уроки! С первой задачей возникли трудности, но алгоритм выполнения задачи на листе изложил верно, а вот написать программу не хватило знания синтаксиса, хотя мысли были такие как в вашем решении.
Вторую задачу решил практически сразу, (первым способом), но возникли трудности, опять же, не мог понять как в словаре поставить ЗНАЧЕНИЕ +1. Перепробовав множество вариантов ( и почему-то так и не воспользовавшись знанием с прошлых уроков( +=)) я обратился к гуглу и был расстроен узнав, что все намного проще чем я думал.
Респект за труды!
20:48 немного не честные условия. Я решил задачу немного другим способом, не знал что можно сразу добавлять через append в словарь ключи, поэтому сделал через две временные переменные, которые потом добавлялись как пара ключ-значение.
Такая же история :)
так мы не относительно словаря делаем .append, а относительно списка
Мой первый сенсей по Pyton! Если что то не понятно пересматриваю до понимания. Большое Спасибо! Идей и развития!
А я понял вторую задачу неправильно))) Подумал, что нужно подсчитать просто количество слов и сильно удивился, когда ты назвал её сложной, ибо же там всё вот так должно быть: print(len(my_text.split())). И только потом допёр, что надо было подсчитать количество повторений каждого слова)))
ахах, плюсую) тоже в строчку записал и думаю что-то тут не так..
чуть по другому зделал 1 но тот же результат
d={}
for e in range(len(a)):
c =[]
if type(a[e]) == str:
i = e + 1
while i
Вторая задача new_slovar = {i: n.split().count(i) for i in n.split()}
Ты лучший !!!
Ура новый урок
такие элементарные вещи объясняют так, что мозг взорвется
Наиль, привет! Спасибо большое за уроки, они правда стоящие! Действительно, второе задание не совсем корректно дано и я, как многие, просто подсчитал len, глупо радуясь быстрому успеху...)))
Решение задачи номер 1 как я вижу. Теперь буду смотреть как надо было решать)
a=["first", 1, 2, 3, "second", 10, 20, "third", 5, 56, 70, "fourth", -54]
d={}
m=[]
x=len(a)
for i in a:
if type (i) == str:
b = i
m.clear()
if type(i) == int:
m.append(i)
d[b]=m[:x]
print (d)
интересное решение задачи через цикл for,я не додумался бы,думал надо сделать с вложенными циклами,но тоже не догнал как))
в итоге решил так:
a = ['first', 1, 'second', 10, 20, 'third',
30, 40, 50, 'fourth', 15, 25, 45, 21]
b = ['first', 'second', 'third', 'fourth']
c = [[1], [10, 20], [30, 40, 50], [15, 25, 45, 21]]
print(dict(zip(b, c)))
lst = ['first', 1, 2, 3, 'second', 4, 5, 'third', 3, 1, 5]
myDict = dict()
values = []
for elem in lst:
while not type(elem) == str:
values.append(elem)
break
if type(elem) == str:
values = []
myDict[elem] = values
print(myDict)
Спасибо! Все отлично в этом курсе. Есть предложение - больше реальных кейсов, как задача #convert(miles)
Супер! Всё получилось! Но первая задачка заставила прям подумать.
Круто! Очень понравилось, разбора задач мне очень нехватает,наконец-то нашла что-то клёвое
Слушай, я 2 задачи решил через цикл в цикле )))) Но твое решение по задачам конечно выглядит элегантнее ) Хоть мое и не такое изящное - но рад что сам решил без подсказки твоей :) И да - решение второй задачи я ещё не посмотрел :)
Ждёём продолжение курса по Python !!
Да, со второй задачей - не правильно, или даже не точно был задан вопрос. Нужно было наверное сказать - сколько каждого слова в списке. А то я так же как и многие (судя по отзывам) посчитал общее кол-во слов и уникальных слов )
Помогите разобраться, в задаче с определением количества слов не понял.
написали цикл
for word in my_text.split():
if word in my_dict2: - почему здесь то проверяем наличие слова в словаре my_dict2, он же ведь еще пустой?
такой же вопрос !
Вторая задача, решение с использованием set() - множество.
text = 'никогда не поздно быть тем кем ты мог бы быть никогда не поздно быть тем кем ты мог бы быть'
words = text.split() # создаем переменную и присваиваем ей массив со всеми словами из текста
set_words = set() # создаем пустое множество
for w in words:
set_words.add(w) # помещаем слова в set_words (в set() нельзя поместить одинаковые элементы)
print(len(set_words)) # выводим количество элементов в множестве set_words
>> 9
Наиль, все ждут 10 урок. Уже больше 5 месяцев прошло.. Не подведи родной
Ochen xorowo obyasnaete . Spasibo bolwoe. Jdem 10 urok😊
спасибо сенсей, обработанную полученную информацию, и отправлю как всегда задание вам, о мой сенсей
#потратил не меньше 4-х часов на решение, задача была не из легких (особенно когда не знал как в 1 значении иметь от 1-го значения , и то где хранить данные )
a = ["first", 1,2,3,4,5,"second",7,8,9, "thir",11,12,13,"fur",15,-16]
#сюда можно добавлять слова в зависимости от вместимости словаря
i = 0
b = 0
x = 0
v = 0
m = 0
n = {}
z = ["q","w","e","r","t","y","u","i","o","p"] #вместимость словаря
print ("вместимость словаря :",len(z)-1,"слов")
while m < len(a) :
while i < len(a) and type (a[i]) == str :
z[x] = []
n[a[i]]=z[x]
i +=1
while i < len(a) and type(a[i])==int :
z[x].append(a[i])
if i < len(a):
i +=1
else:
break
x +=1
m +=1
print (n["first"])#поиск по имени
print (n )# полный словарь
Спасибо за вашу работу =) продолжаю изучать новую информацию.
Ничего не понятно , но очень интересно!
Большое спасибо! Все очень ясно и понятно, жду 10 урок
Задание сложное, новичкам как мне усвоить бы как вы его решаете в этом видео, не то чтобы самому догадаться как нужно его решить.. Логика в целом понятна, но детали.. и самому о них догадаться мне лично пока крайне затруднительно было бы.
жиза
Да, согласна. Конечно, возможно автор хочет чтобы мы ами нашли информацию в интернете, но тут бы основы выучить и понять. У меня лично с цикла while пошла неразбериха в задачах
28:00 Может кто-то мне объяснить, пожалуйста, почему в коде написано "if word in my_dict2: ...." . Как я понял, это означает:" Если в my_dict2 есть word, то что-то произойдёт. Но на этот момент же my_dict2 пустой. Или я баран и что-то не понимаю?
Спасибо
У меня тот же вопрос. Откуда в словаре появились слова, если он инициализируется пустым?
Понимаю что я сделал не правильно, но по другому не разобрался)
d = {'first': [1 , 2, 3], 'second':[10,20], 'third':[15, 56, 70], 'fourth':[-50] }
print(d)
))))
Это называется "пойти по пути наименьшего сопротивления". Все мы так решили, хотя бы в первые полмгновения, как услышали условия задачи))
Мне нравится ваш урок
Ни хрена непонятно , я один такой тупой что ли?(((
нет, он так обучает. дает задачу, говорит что ранее все что нужно для решения он рассказал, начинает писать код и там половину нового......а я ломал голову полчаса.......
нет, мне тоже не понятно. но мне сказал сам автор и еще знакомый из айти, что это всегда так будет) ощущение что ты ничего не понимаешь, а вокруг все такие умные. просто продолжай и все)
чтобы более менее ориентироваться в его уроках порешай интерактивную(если включить пошаговое выполнение кода, то будешь видеть как код ведет себя не каждом этапе) штуку: pythontutor. будет небольшой бэкграунд - будешь воспринимать более менее информацию.
@@felixzhil продолжать не понимать? хороший совет
@@user-nd9do2nk2j как включить пошаговое выполнение кода?
Самый лучший учитель Alishev! А где остальные? Хорошо было бы если дальше выйдет
Скоро начну записывать дальше.
alishev здравствуйте! Если можете помогите пожалуйста мне с задачей, я написала код, но не знаю как сделать так чтобы выводились только порядковые номера кратные 3
Создать файл и записать в него обратные натуральные числа 1, 1/2,...,1/n. Вывести на экран все компоненты файла с порядковым номером, кратным 3. На пайтон. Я все в коде написала только вот не могу сделать там чтобы он выводил компоненты из файла с порядковым номером кратным 3, он у меня все выводит....
import pickle
ask = "user.dat"
n = float(input("n="))
with open(ask, "wb") as f:
s = 1;
while s
Решил 1 задачу начиная с конца списка, может кому интересно
a = ['first', 1, 2, 3, 'second', 10, 20, 'third', 44, 543, 333,'fourth', -50]
d = {}
e = {}
b = []
for i in range (len(a)-1,-1,-1):
if type(a[i]) == int:
b.append(a[i])
else:
d[a[i]] = b[::-1]
b = []
c = list(d)[::-1]
for i in range (len(c)):
e[c[i]] = d[c[i]]
print(e)
посидел над первой задачей часа 3-4. Какие только словари у меня не получались)))) И мешало мне именно то, что я не мог создать переменную без значения и то, что я долго думал, как же добавить в значение к ключу несколько элементов. Хоть убей все прошерстил, но забыл про урок list и упорно его глазами не замечал
Бывает)
Спасибо за прекрасные уроки! Условие второй задачи действительно не чётко обозначено. Но она далась легко, а первая... мне было сложно, скажу честно подсмотрела решение.
Я все твои уроки за два дня посмотрел, затянуло
Над каждым сижу думаю, зато всё ясно как божий день
Для первой задачи автор предлагает найти решение, которое "должно работать с любыми исходными списками" (14:07). Но решение, которое предлагает автор, работает не со всеми списками! Например, если в списке перед "first" поставить числа, то код не будет работать!
Автор уточняет про патерн чередования: строка - числа.
еще одно решение 1 задачи:
a=['first', 1,2,3, 'second', 4,5,6,7, 'third', 1,43,2]
c={}
b=[]
for elem in a:
if type(elem)==str:
b.clear()
v=elem
if type(elem)==int:
b.append(elem)
c[v]=b
print(c)
я также решил ее)) правда загуглил как очистить массив))
@@MuaddibAtreides ага, тож часто обращаюсь к гуглу чтобы посмотреть именно методы списков и тд)
Вот чего добился я, в конце попахивает Hard cod-ом но работает при любых значениях. ЭТО МОЙ ПУТЬ!
d = {}
t = []
j = 0
q = 0
for i in range(len(a)-1):
if type(a[j]) == str:
d[a[j]] = 1
t.append(a[j+1])
j += 1
else:
if type(a[j]) == int and type(a[j-1]) == str:
j += 1
else:
if type(a[j]) == int and type(a[j+1]) == int:
t.append(a[j])
j += 1
else:
t.append(a[j])
d[a[q]] = t
j += 1
q = j
t = []
d[a[-2]] = a[-1]
print(d)
a = ["first", 1, 2, 3, "second", 20, 30, "third", 15, 30]
d = {}
for element in a:
if type("s") == type(element):
key = element
value = []
else:
value.append(element)
d[key] = value
Спасибо за труды!
Задание 1
d = {}
a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
key = 0
for element in range(len(a)):
if type(a[element]) == str:
key = a[element]
l = []
else:
l.append(a[element])
d[key] = l
print(d)
Супер! Когда ожидать новый выпуск?
В второй задаче. У нас была сначала строка, потом мы в цикле for преобразовали ее в лист, но когда он стал словарем скажите пожалуйста?
Он им не стал, просто мы поставили сразу условие, если такого элемента НЕТ в словаре, то мы его достаем из листа как ключ, присваиваем ему значение и тогда он попадает и начинает создавать сам словарь.
@@aqmoon9889 Спасибо брат за отзывчивость, но я уже сам допер)
Парился над 1 задачкой, решил с помощью зип)
def funct3():
keys = ['first', 'second', 'third', 'fourth',]
values = [1, 2, 3], [10,20], [15,60,70], [-50]
dictionary = dict(zip(keys, values))
print(dictionary)
h7 = funct3()
print(h7)
Я немного не понял - задача 2 изначально звучит как - подсчитать количество слов в тексте. Это же считается len(my_text.split(" "))
А потом уже по ходу обьяснения решения выясняется что надо было посчитать количество слов и количество повторяющихся слов тоже!
вот решил иначе пока не знал что в словарь можно под ключом положить пустой список, всё это уже прошли
list1 = ['first', 1, 2, 3, 'second', 20,30, 'third', 15, 56, 70, 'fourth', -50]
my_dict = {}
cont = None
my_list= []
for i in list1:
if type(i) == str and len(my_list) > 0:
my_dict[cont] = my_list
if type(i) == str:
cont = i
my_list = []
else:
my_list.append(i)
print(my_dict)
ps. ребята думайте головой, над реализацией, на мой взгляд пусть она будет даже иной и более ёмкой, зато именно вашей. Далее легче будет въехать и понимать принципы, плюсы и минусы других решений, и юзать лучшие из них в последующих задачах.
Здравствуйте, в моменте 10:17 вывод: ключ - значение. Не легче было бы просто написать print("Ключ: ",key, " ,значение: ",value), без перевода переменных в тип str. Заранее спасибо!
a = ["First", 1, 2, 4, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50, 20]
d = {}
i = 0
while i
Пишу свои решения, до просмотра решений в видео.
П.С. (после просмотра решений) во второй задаче не слишком очевидно было, что нужно подсчитать количество именно "встреч" слова, задание звучало "подсчитать количество слов в тексте" , формально можно было обойтись одной строкой: print(len(mytext2.split())) . Но уже из логики дальнейшего разъяснения задания стало ясно, что подразумевается именно количество "уникальных" слов в тексте. ))) а то, как известно, без внятного ТЗ, результат - ХЗ
# Первая задача
d={}
a=["first", 1, 2, 3, "second", 10, 20, 50, -20, 20, "third", 15, 56, 70, "fourth", -50, "fifth", 0]
for i in range(len(a)):
if type (a[i])==str:
list=[]
temp=i+1
while type(a[temp])==int:
list.append(a[temp])
temp+=1
if temp == len(a):
break
d[a[i]]=list
print(d)
# Вторая задача
(попытался в массиве дополнительно подсчитать количество повторений слов)
mytext="Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет conob asdf fdfd asdf asdf"
list=mytext.split()
dic={}
for i in list:
num=0
if i in dic:
num=dic[i]+1
dic[i]=num
else:
dic[i]=1
print (len(dic))
print (dic)
Для первого задания:
for elem in a:
if type(elem) == str:
s = []
d[elem] = s
else:
s.append(elem)
чем не вариант?
Для вас было легко??
Уффф, после трех просмотров видео понял решения.. главное теперь не забыть🙃
Привет. У тебя во 2й задаче (2й вариант), решение выводит правильно только потому что в памяти сохранён my_dict2(из предыдущего решения). Если создать новый словарь my_dict3, то выводит только пустые скобки. Проверил в отдельном файле и действительно решение не работает. В любом случае спасибо за уроки!
Пример:
my_text = "Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет"
my_dict3 = {}
for word in my_text.split():
if word in my_dict3:
my_dict3[word] = my_dict3.get(word, 0) + 1
print(my_dict3)
Я использовал метод count для подсчета количества вхождений слов в список.
Как новичку первую задачу получилось решить только для конкретных данных. Понимаю, что задачка дается на подумать, но как-то очень неочевидно. На основе изученнего на канале ранее - точно бы не получилось дойти.
Не согласен с "На основе изученнего на канале ранее - точно бы не получилось дойти". Абсолютно все составляющие решения подробно освещались либо на этом уроке, либо в предыдущих. Я за этим отдельно слежу.
2 задание!
my_text = "Привет как дела сколько дел тут накопилось мне конец и єто правда"
my_text = my_text.split(" ")
print(len(my_text))
Май дикт из биг, май дикт из вери биг (с)
#просто для подсчета слов в строке или файле
b = 'Пример текста для программы написанной на Питоне'
v = len(set(b.split()))
print(v)
#или, но смотрите, чтобы в винде была галочка "показывать расширения файла", иначе он может у вас называться 123.txt.txt и интерпритатор его не найдет)))
a = len(set(open(r'c:\temp\123.txt').read().split()))
print(a)
Можно наверно покороче, но пока так
a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
x = {} # создаем пустой словарь
for i in (a): # узнаем кол-во ключей
if type(i) == str:
x[i] = [] # добавляем ключи в словарь
for key, value in x.items(): # заполняем значение (список) соотв. ключей
for s in a:
if key == s: # попадаем на нужное слово в списке a
p = a.index(key) + 1
while type(a[p]) != str:
value.append(a[p])
p += 1
if len(a) == p: # проверка чтобы не выскочить за пределы списка a
break
print(x) # {'first': [1, 2, 3], 'second': [10, 20], 'third': [15, 56, 70], 'fourth': [-50]}
Task_1:
a = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
hash_map = {}
for i in range(len(a)):
key = a[i]
counter = 0
if type(key) == str:
counter = counter + 1
b = []
while i + counter < len(a) and type(a[i + counter]) == int:
b.append(a[i + counter])
counter = counter + 1
hash_map[key] = b
print(hash_map)
я так замаслал:
myList: list = ["first", 1, 2, 3, "second", 10, 20, "third", 15, 56, 70, "fourth", -50]
myMap: dict = {} # ключ слово а значение это список из значений | int, str
key: str = ""
value: int = 0
internalList: list = []
for element in myList:
if (type(element) is str):
key = element
internalList = []
continue
elif (type(element) is int):
value = element
internalList.append(value)
myMap[key] = internalList
print(myMap) # {'first': [1, 2, 3], 'second': [10, 20], 'third': [15, 56, 70], 'fourth': [-50]}
a = ["First", 1, 2, 3, "Second", 10, 20, "Third", 15, 56, 70, "Fourth", -50]
def dictionary(x):
dic = {}
for i in x:
if type(i) == str:
key = str(i)
listo = []
dic[key] = listo
else:
listo.append(int(i))
print(dic)
dictionary(a)
Мой, более длинный вариант решения второй задачи
# Задача 2 (посчитать кол-во слов в тексте)
text = 'привет Привет пока арбуз код кот ручка чат слово ещё слово слово слово слово слово слово слово слово'
slova = text.split(' ')
d_slova = {}
temp = 0
for e in slova:
if e in d_slova:
d_slova[e] = d_slova[e] + 1
else:
d_slova[e] = temp
temp += 1
dlina = len(d_slova)
print(dlina)
print(d_slova)
d2={'привет':20, 'пока':10}
if 'привет' in d2:
print('yes')
else:
*error*
*SyntaxError* : unindent does not match any outer indentation level
что это за ошибка и как ее решить? пишу в idle python 3.9.0 shell
Не очень понял, как работает .append для словаря. Можете объяснить пожалуйста логику работы этой функции?
Логику добавления в обычный список понял, там всё просто.
еще актуально?
Подскажите пожалуйста, условие второй задачки! Не совсем понял, что необходимо сделать!
почитал комментарии, вроде понял суть задания, но решение, опять-таки, далеко от изящности...
my_text = "Иду работать работать работать чтобы потом не работать и тупа кайфовать тупа атдыхать атдыхать работать"
a = my_text.split()
d = {}
for i in range(len(a)):
counter = 0
for j in range(len(a)):
if a[i] == a[j]:
counter += 1
d[a[i]] = counter
print(d)
a=["first",1,2,3, "second", 10,20,"third",4,5,6,"fourth",78,89]
s=dict()
for item in a:
if type(item)==str:
l = list()
s[item]=l
elif type(item)==int:
l.append(item)
if type(item)==str:
break
print(s)
результат=
{'first': [1, 2, 3], 'second': [10, 20], 'third': [4, 5, 6], 'fourth': [78, 89]}
Задача - Посчитать сумму не повторяющихся слов вместе с пробелами
my_text = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
list_text = my_text.split()
list_for_sum = []
for w in list_text:
if w not in list_for_sum:
list_for_sum.append(w)
sum_words_space = len(list_for_sum) + len(list_for_sum) - 1
print(sum_words_space)
Ответ - 19
пересмотрел 7 раз так и не понял.
А что не понятного?
Добрый день! Я не пойму одного. Как программа понимает, что стр именно в ключ надо пихать, а список из чисел - в значение. Может, кто подскажет?
for in list:
if type(i) ==str: # это ключ
pass
elif type(i) == int: # это значение
pass
По типу строчный или числовой
А если список начинается с числительных? У меня добавлена строка с проверкой.
посчитать слова без словаря можно так:
a = "Приве пока как дела привет привет арбуз слон арбуз стол"
print (len(a.split(' ')))
не знаю мне лично все понятно, замечательно объясняет человек
28:20 не понятно объяснение. Многие простые вещи объясняешь по многу раз, а вещи посложнее или не явные объясняешь по одному разу или не объясняешь вообще. my_dict2[word] = my_dict2[word] + 1 "мы обращаемся по тому числу которое уже лежит по этому слову"... что?? Выглядит строка либо как добавление ключ:значение в словарь (причем ключ это слово из списка, а значение это это же слово +1), либо меняем слово из списка на это же слово + единица. Бред... Короче лезть гуглить. А когда найду там объяснения и описания всех вопросов - нахрена мне возвращаться сюда?
Я запутался. Есть команда if e in my_dict: НО словарь my_dict пустой! как переменная 'e' пожет проверить пустой словарь и найти там нужное слово? И ещё страннее то, что команда добавляющая в my_dict переменную 'e' идёт уже после условия. Как так происходит? Объясните логику.
for e in a: - строка, а не "my_dict".
То есть, сначала, берется первый член из списка "а" - "first" и определяется его тип. Если тип str, то добавляется в словарь my_dict.
Потом берется второй член из списка "а" - "1", его тип не является "str" поэтому отрабатывается блок else, по которому к созданному ранее ключу добавляется значение. И т.д.
Мне самому непонятно только одно, как распознается программой, что результат блока else определяется на место значения. Почему не ключа?
Как я понял ты о второй задаче.
По идее переменная "е" проверяет словарь, в котором изначально ничего нет, пропускается первое условие, потому что проверяемого слова там точно нет, и выполняется второе, когда слову присваивается единица. Если следующим будет такое же слово, то выполнится первое условие, по которому к единице из предыдущего цикла прибавляется ещё единица. Получается слово встречается два раза, и в списке значение ключа тоже будет 2. Если слово будет другим, то цикл повториться снова со второго условия.
почему когда вы рассказывали я понимал, а как задачи то все ,ступор?
Так всегда бывает. Понимать объяснение и уметь делать самостоятельно - это разные вещи. Надо больше практиковаться.
@@alishevN Спасибо
Когда новый урок?
Спасибо! Когда новый урок?
Скоро!
Как написать код к задаче?
Чтоб на консоль выводилось именно то что ниже (новичок)
Продукт | Количество = Стоимость
Носки | | 2 = 1000 тенге
Кто может подсказать по 1му заданию, я конечно код через задницу написал, и все же его много раз просмотрел, должно работать, но по факту выдает белиберду
Код
a = ["1st", 1, 2, 3, "2nd", 5, 87, 74, "3rd", 45, 98, 75, "4th", 7, 3]
d = {}
l = []
for i in a:
tmp = type(i)
if tmp == str:
key = i
print("key =", key)
if len(l) > 0:
while len(l) > 0:
l.pop()
else:
l.append(i)
d[key] = l
print(d)
Ответ
key = 1st
{'1st': [1]}
{'1st': [1, 2]}
{'1st': [1, 2, 3]}
key = 2nd
{'1st': [5], '2nd': [5]}
{'1st': [5, 87], '2nd': [5, 87]}
{'1st': [5, 87, 74], '2nd': [5, 87, 74]}
key = 3rd
{'1st': [45], '2nd': [45], '3rd': [45]}
{'1st': [45, 98], '2nd': [45, 98], '3rd': [45, 98]}
{'1st': [45, 98, 75], '2nd': [45, 98, 75], '3rd': [45, 98, 75]}
key = 4th
{'1st': [7], '2nd': [7], '3rd': [7], '4th': [7]}
{'1st': [7, 3], '2nd': [7, 3], '3rd': [7, 3], '4th': [7, 3]}
кароч, перезагрузил PyCharm, стало работать как надо, хотя ниче в коде не менял. PyCharm наверно глючный.
а что делать если в юпитере нотбук вібивает ошибку 404?
d.items() ------> ето же метод словаря а не функция.... да?
Вот как я решил)
1я задача:
l = ['first', 1, 'second', 1, 2, 4, 8, 'third', -3, 5, 11, 'fourth', 1, 6, 99, -111, 0, 15, 'fifth', 0, 1, 5, -1]
d = {}
for i in l:
if type(i) == str:
const = i
l1 = []
else:
l1.append(i)
d[const] = l1
print(d)
2я задача:
s = 'Привет пока как дела привет привет арбуз велосипед стол как слон арбуз да привет'
d = {}
for i in s.split():
d[i] = s.count(i)
print(d)
вторая задачка не совсем верно, так как если в тексте будет скажем слово "дар' он покажет что слово да есть 2 раза хотя там только 1. он делит текст на буквы и отсекает все остальное. то есть при наличие ЭдаЭ в любой части слова, т.е. если там будет слово всегда он сделает +1 к слову да
про count он же не рассказывал
как ты узнал
В первой, если список кончиться на строке, она не будет внесена в словарь, так как второе условие не исполниться. Так что правильнее как в видео, т.к логика кода схожа
я зделал иначе немного
d={}
for e in range(len(a)):
c =[]
if type(a[e]) == str:
i = e + 1
while i
Добрый день
Хочу воспользоваться подсказкрй в моей конкретной задаче.
Задаче в том, чтобы создать цикл который будет по требованиям создавать словари с ключами и значениями в общем словаре.
Пример
Есть словарь GORODA ={}
В него нужно помещать другие словари с именами городов
Например MOSCOW {}
С ключем "POPULATION" и значением 12000000:
Пользователь должен по запросу вводить имена городов как ключи и вводить соответствующие значения.
По завершении написать 'NO' и цикл закончится и выведет словарь с ключами и значениями введённых городов.
Спасибо большое надеюсь понятно изложил. Прошу хелп.
С 3.6 словарь является упорядоченным
9:50 можно было написать print("ключ: {}, значение: {}".format(key, value))
print(f'ключ: {key} значение: {value}')
my_text = "привет пока как дела привет арбуз велосипед стол как слон арбуз да привет"
slova = my_text.split()
d = {}
for e in slova:
a = 0
for p in slova:
if e == p:
a += 1
d[e] = a
print(d)
Во втором задании постановка задачи отличается от решения. Ещё не совсем понял - ключи же могут быть только уникальными. Как вообще можно построить словарь на основе повторяющихся ключей? Я на задачу по переименованию повторяющихся слов в строке потратил пару часов
ключи в словаре не повторяются. идет проверка на наличие ключа и увеличивается значение
А для чего нужен словарь с уникальнымиключами в программировании?
просто чтобы был
для меня легче вот так сделать:
my_dict = {}
current_str = None
for e in my_list:
if type(e) == str:
current_lst = []
my_dict[e] = current_lst
current_str = e
else:
current_lst.append(e)
print(my_dict)