Если мы хотим создать пустое множество, а потом добавлять в него значения (например, с клавиатуры или из файла или путем вычисления), то такой путь будет ошибкой: a={ } # это не пустое множество! a.add(5) Выдает ошибку "AttributeError: 'dict' object has no attribute 'add' Потому что a={ } не создает пустое множество, а создает пустой словарь. Пустое множество создается при помощи set() a=set() # пустое множество a.add(5) # добавим в множество элемент
Благодарю, залпом пересмотрел вам курс теперь пересматриваю, чтобы практиковаться. Сам записался на оффлайн курс у себя в городе и сегодня собираюсь сдать тест, чтобы сразу перейти на 2-й месяц, так как весь первый месяц обуения по их программе я уже здесь узнал)) Но в этом видео появился вопрос: 7:04 - я заметил, что числа не перемешиваются, а наоборот статично стоят отсортированные от меньшего)) Как их "зашаффлить"? )
Почему в хаотичном, если при выполнении программы определенная сортировка все-таки есть??!! Например: True всегда встаёт между 0 и 2, а например 'str' располагается в конце множества..!!!
вместо update можно написать "|" set3 = set1 | set2 если хоти создать множество объединяя эти элемент или же если хотим изменить текущее множество то set1 |= set2 также эти функции заменяются этими симловами кому слова сложно запомнить - & | ^ . discard удоляет элемента без выдование ошибки заменяя remove. знак & выводит общие элементы знак - удоляет из текушего множества элементы такиеже элементы что и вдругом множестве ну пробуйте сами дальше
Множество не гарантирует сортировку цифровых значений в порядке возрастания. Можешь проверить это, добавив в множество какие-либо новые значение, например: 55555. Я сам не особо понял как там всё это устроено, но кажется это как-то связано с хэш-функцией.
почему-то когда по урокам пишу всё в pycharm то все хорошо но мне как-то удобней работать в microsoft code, но проблема в том что пишу все так же но там уже идут какие-то ошибки не могу разобраться почему так происходит!?
Для чего нужно это допустим в рабочем дне программиста нужно курс писать по конкретным примерам а то слышишь, только множество списки и тд и тп зачем все это и где исполизовать
нифига не первый удаляется Запусти data = {1, 9, 3, 4, 5, 6, 7, 32} data.pop() print(data) Результатом будет {1, 3, 4, 5, 6, 7, 9} 32 это первый элемент?
Ну, это не совсем так. Все зависит от порядка добавления элементов в множество. Попробуйте, например, {9, 2, 1} и {1, 2, 9}. У меня вывод print({9, 2, 1}) И print({1, 2, 9}) разный. Объясняется все тем, как устроены хэш-таблицы и функция hash().
Множества не предназначены для перемешивания чисел. "Случайный порядок во множестве" надо понимать "во множестве не хранится информация о порядке элементов, поэтому порядок в котором элементы печатаются или перебираются в цикле for не определен". Т.е. они могут выводится в порядке возрастания, в порядке убывания, в каком-то смешанном порядке и т.д. - это на усмотрение самого Питона. Гарантируется лишь ,что один оператор print или один оператор for обработает в каком-то порядке все элементы множества без повторений. А уж как порядок меняется или не меняется при добавлении или удалении элементов - это как удобно самому интерпретатору. Может быть даже и так , что мы ничего с множеством не делаем , а print каждый раз выводит в разном порядке (мало ли, может сборщик мусора что-то там оптимизирует в этом множестве, чтобы его легче обрабатывать).
тоже стало интересно, убрал из первого множества цифру один - и True появилось. возможно, это связано с превращением булевого типа в числовой, но конкретный механизм почему так происходит - не знаю
@@takomy9033False - это тот же 0(True - 1). А так как множества не отображают повторяющиеся элементы, то высвечивается только False ????????????????????.
ничё не измениться если прописать: data.add(bool(True)) И с таким же успехом будет результаты если обратить его в int(), да даже в float (). Скорее всего множества не воспринимают bool как отдельный тип данных, только визуально добавляют, его просто "присваивают к стаду", а значение True = 1, напишешь False, всё добавится.
False и True - не то же самое, что 0 и 1, но отличаются только "внешним видом" (bool построен из int изменением символьного представления, поэтому print печатает их по-разному). А для проверки неповторяемости в множестве важно не внешнее представление, а значение (хотя внешний вид тоже сохраняется). Сравните print({True,1, 1.0}) #{True} print({1, True,1.0}) #{1} print({1.0, True,1}) #{1.0} И так же сравниваются ключи в словаре: d={True:'b', 1:'i', 1.0:'f'} print(d) # {True: 'f' } print(d[1]) # f print(d[1.0]) # f print(d[True]) # f
Кто знает почему всегда snumber 0 если в if изменяется на другое? import random import os attempt = 0 snumber = 0 print("Выберите уровень сложности") print("1. Легкий - Неограниченое число попыток от 0 до 100") print("2. Нормальный - 15 Попыток от 0 до 250") print("3. Сложный - 20 Попыток от 0 до 500") dif = input() if dif == 1: snumber = random.randrange(101) if dif == 2: snumber = random.randrange(251) if dif == 3: snumber = random.randrange(501) os.system("cls") while True: print(snumber) print("================") print("| Угадай число |") print("================") print("Попытки:",attempt) print("================") number = int(input()) os.system("cls") if number == snumber: print("===========================") print("| Поздравляем ты победил! |") print("===========================") break if number < snumber: print("Больше!") attempt = attempt + 1 if number > snumber: print("Меньше!") attempt = attempt + 1 input()
import random import os attempt = 0 snumber = 0 print("Выберите уровень сложности") print("1. Легкий - Неограниченое число попыток от 0 до 100") print("2. Нормальный - 15 Попыток от 0 до 250") print("3. Сложный - 20 Попыток от 0 до 500") dif = input() if dif == "1": snumber = random.randint(0, 100) attempts_allowed = float('inf') # unlimited attempts elif dif == "2": snumber = random.randint(0, 250) attempts_allowed = 15 elif dif == "3": snumber = random.randint(0, 500) attempts_allowed = 20 else: print("Неверный выбор!") exit() os.system("cls") while attempt < attempts_allowed: print("================") print("| Угадай число |") print("================") print("Попытки:", attempt) print("================")
number = int(input()) os.system("cls")
if number == snumber: print("===========================") print("| Поздравляем, ты победил! |") print("===========================") break elif number < snumber: print("Больше!") else: print("Меньше!")
attempt += 1 if attempt >= attempts_allowed: print("Попытки исчерпаны. Загаданное число было:", snumber)
Гоша оговорился, множество не первый элемент удаляет, а рандомный, при этом он этот элемент ещё и возвращает. Допустим нужно перебрать множество: в цикле получаем очередной элемент в переменную с помощью метода pop(), при этом удаляем его из множества, затем с этой переменной проделываем какую-то работу(пишем в базу, например) и переходим к следующему элементу множества.
поясняю: скорее всего будет удобно, если, например нам понадобится сайт, типо спортмастера, где надо будет спросить у человека, каким видом спорта он увлекается. И он, допустим, несколько раз напишет "футбол" и чтобы сильно не нагружать алгоритм, он просто отсеивает повторяющиеся элементы
@@yoyozhik существует валидация данных пост запроса которая решает эту проблему, плюс на практике юзеру предпочтительнее разрешать выбирать из существующих видов спорта дабы он не сохранял слово писюн в ваш фрозенсет))
пишете полную чушь)) это не видео по какой-то технологии типо Селери, а базовые понятия о базовых типах данных. в курсах за "бешенные деньги" не дают ничего того, чего нет в открытом доступе. этим сообщением не приуменьшаю заслуг автора
интересный момент, что все таки множество нельзя использовать для "перемешки", у меня оно наоборот упорядочило числа: i = 4 data = {3, 2, 1,"seeet"} while i < 22: data.update([i]) i += 1 print (data) Всегда выводит в строгом порядке от 1 до 21, только строка "seeet" скачет-туда сюда, а 3, 2, 1 (так же как и 2, 3, 1) он переворачивает в 1, 2, 3 Я Python знаю только из видео автора, хотелось бы комментарий от него на этот счет, чтобы уже закрыть этот не укладывающийся в представление о множестве вопрос.
Может быть дело в том что вы создали цикл и поставили туда множества а цикл всегда начинает с меньшего и идёт до большего поэтому хотя вы поставили множества она входит в цикл и принимает вид цикла
} } print(person["user_1"]["hobbies"]["others"]) print(person.keys("user_1")) ребят а если я хочу вывести ключи с первого пользователя как мне в принт персон кейс написать юзер один что бы он все вывел? я в посл строчке написал но питон пишет что я ошибся
@@thankyou9818 привет спасибо за ответ а можно ли вывести только все ключи от хобби например? print(person['user_1']['important'].keys()) так будет? мне ошибку пишет
@@yanavin2964 нет. Если ты хочешь всё ключи от хобби, то тогда пишешь print(person['user_1']['hobbies'].keys()). А если ты пишешь там импотант.кейс то тогда тебе ошибку выведет, потому что импотант является сам кейсом.
Половину прошла, осталось столько же. Только сложность повыше )
Большое спасибо за возможность учиться. Рада, что нашла вас на ютубе
Если мы хотим создать пустое множество, а потом добавлять в него значения (например, с клавиатуры или из файла или путем вычисления), то такой путь будет ошибкой:
a={ } # это не пустое множество!
a.add(5)
Выдает ошибку "AttributeError: 'dict' object has no attribute 'add'
Потому что a={ } не создает пустое множество, а создает пустой словарь. Пустое множество создается при помощи set()
a=set() # пустое множество
a.add(5) # добавим в множество элемент
Интересно, спасибо
ааа так вот зачем set
Спасибо, друг)
когда с комента понял больше чем с видео
Спасибо вам большое, благодаря вам я закрыла сессию на 5 и начала хоть что-то понимать в этом языке программирования 💖
Закрыла сессию, но при этом Тимур?
Спасибо вам, благодаря вам начал понимать этот язык программирования!
спасибо за урок. шаг за шагом смотрю все уроки.
Ты гениальный лектор.
Благодарю, залпом пересмотрел вам курс теперь пересматриваю, чтобы практиковаться. Сам записался на оффлайн курс у себя в городе и сегодня собираюсь сдать тест, чтобы сразу перейти на 2-й месяц, так как весь первый месяц обуения по их программе я уже здесь узнал))
Но в этом видео появился вопрос:
7:04 - я заметил, что числа не перемешиваются, а наоборот статично стоят отсортированные от меньшего)) Как их "зашаффлить"? )
спасибо вам за уроки) захотелось начать программировать
Круто что они существуют, а зачем они нужны? где их можно использовать?
Python ещё и обзывается. Ему написали “Hello”, он ответил “l.o.h.e” 🤣
Почему в хаотичном, если при выполнении программы определенная сортировка все-таки есть??!! Например: True всегда встаёт между 0 и 2, а например 'str' располагается в конце множества..!!!
вместо update можно написать "|" set3 = set1 | set2 если хоти создать множество объединяя эти элемент или же если хотим изменить текущее множество то set1 |= set2 также эти функции заменяются этими симловами кому слова сложно запомнить - & | ^ . discard удоляет элемента без выдование ошибки заменяя remove. знак & выводит общие элементы знак - удоляет из текушего множества элементы такиеже элементы что и вдругом множестве ну пробуйте сами дальше
Спасибо за видео!
Если вводить только цифровые значение, то они не в случайном порядке, а в порядке возрастания. Так что они у Вас не "случайно" так встали
не всегда в порядке возрастания
Множество не гарантирует сортировку цифровых значений в порядке возрастания. Можешь проверить это, добавив в множество какие-либо новые значение, например: 55555. Я сам не особо понял как там всё это устроено, но кажется это как-то связано с хэш-функцией.
data = {3,4,6,13,2233,9}
print(data)
Почитав комментарии понял, что все должно вставать по возрастанию, но почему 2233 встает вообще по середине?..
вроде как порядок случайный,автор так говорит
спасибо
Я буду тут каждый день. День 7.2
3:14 он всегда в порядке возрастания
В новой версии питона, скорее всего, поменяли это
как вы комментируете весь код сразу или какую-то его часть?
Top
почему-то когда по урокам пишу всё в pycharm то все хорошо но мне как-то удобней работать в microsoft code, но проблема в том что пишу все так же но там уже идут какие-то ошибки не могу разобраться почему так происходит!?
Для чего нужно это допустим в рабочем дне программиста нужно курс писать по конкретным примерам а то слышишь, только множество списки и тд и тп зачем все это и где исполизовать
Во множестве элементы сортируются по возрастанию если это числа а с помощью pop() удаляет первый элемент
нифига не первый удаляется
Запусти
data = {1, 9, 3, 4, 5, 6, 7, 32}
data.pop()
print(data)
Результатом будет {1, 3, 4, 5, 6, 7, 9}
32 это первый элемент?
я один не понимаю? почему множества не рандомят числа до 10?
Та же история. И в видеоуроке числа до 10 не рандомились, а выводились в порядке возрастания. Хотелось бы услышать ответ от автора.
Ну, это не совсем так. Все зависит от порядка добавления элементов в множество. Попробуйте, например, {9, 2, 1} и {1, 2, 9}. У меня вывод print({9, 2, 1}) И print({1, 2, 9}) разный. Объясняется все тем, как устроены хэш-таблицы и функция hash().
Гораздо интереснее (для непосвященных) почему {1, True} == {1} =)
@@EvgenijJobs True является 1, а False 0
Множества не предназначены для перемешивания чисел. "Случайный порядок во множестве" надо понимать "во множестве не хранится информация о порядке элементов, поэтому порядок в котором элементы печатаются или перебираются в цикле for не определен". Т.е. они могут выводится в порядке возрастания, в порядке убывания, в каком-то смешанном порядке и т.д. - это на усмотрение самого Питона. Гарантируется лишь ,что один оператор print или один оператор for обработает в каком-то порядке все элементы множества без повторений. А уж как порядок меняется или не меняется при добавлении или удалении элементов - это как удобно самому интерпретатору. Может быть даже и так , что мы ничего с множеством не делаем , а print каждый раз выводит в разном порядке (мало ли, может сборщик мусора что-то там оптимизирует в этом множестве, чтобы его легче обрабатывать).
Подскажите, почему в данном примере не отображает True?
date = {5, 7, 9, 1, 6, 4, 6}
date.update(['stroka', True, 4.5, 3])
print(date)
тоже стало интересно, убрал из первого множества цифру один - и True появилось.
возможно, это связано с превращением булевого типа в числовой, но конкретный механизм почему так происходит - не знаю
True - это та же самая 1(False-0). А так как множества не отображают повторяющиеся элементы, то высвечивается только 1.
@@takomy9033False - это тот же 0(True - 1). А так как множества не отображают повторяющиеся элементы, то высвечивается только False ????????????????????.
ничё не измениться если прописать: data.add(bool(True))
И с таким же успехом будет результаты если обратить его в int(), да даже в float ().
Скорее всего множества не воспринимают bool как отдельный тип данных, только визуально добавляют, его просто "присваивают к стаду", а значение True = 1, напишешь False, всё добавится.
False и True - не то же самое, что 0 и 1, но отличаются только "внешним видом" (bool построен из int изменением символьного представления, поэтому print печатает их по-разному). А для проверки неповторяемости в множестве важно не внешнее представление, а значение (хотя внешний вид тоже сохраняется). Сравните
print({True,1, 1.0}) #{True}
print({1, True,1.0}) #{1}
print({1.0, True,1}) #{1.0}
И так же сравниваются ключи в словаре:
d={True:'b', 1:'i', 1.0:'f'}
print(d) # {True: 'f' }
print(d[1]) # f
print(d[1.0]) # f
print(d[True]) # f
клыр
лыст
В множестве можно удалить элемент и добавить но нельзя заменить элемент. На первый взгляд выглядит бессмысленно. Но интересно почему так.
У меня True идёт как 1 а False не идёт ведь оно как 0
Спасибо. А наоборот как сделать? Преобразовать множество в список
C помощью функции list(), например. Только порядок элементов списка будет "случайный".
с каждым видео просмотров все меньше и меньше)
Это какая программа Python или PyCharm?
PyCharm
Это C#
@@SeraphimLUXнето
Гений
@@furrka1 смысле ?
Не понимаю зачем нужно писать команды чтобы что либо добавить,ведь можно сделать это в ручную просто добавив в список новый элемент
Во время выполнения программы вы не сможете ничего вручную добавить или удалить.
хахахахха 2:06, LOHE -Лохи
У меня HOLE
Автор в этом курсе поставил себе одну задачу - максимально быстро заспидранить на отьебись "курсы" по программированию...
А что он плохо объясняет или что-то недоговаривает?
А чего он не рассказал про методы множеств, про intersection, union, update и тд.
Ставлю диз
Кто знает почему всегда snumber 0 если в if изменяется на другое?
import random
import os
attempt = 0
snumber = 0
print("Выберите уровень сложности")
print("1. Легкий - Неограниченое число попыток от 0 до 100")
print("2. Нормальный - 15 Попыток от 0 до 250")
print("3. Сложный - 20 Попыток от 0 до 500")
dif = input()
if dif == 1:
snumber = random.randrange(101)
if dif == 2:
snumber = random.randrange(251)
if dif == 3:
snumber = random.randrange(501)
os.system("cls")
while True:
print(snumber)
print("================")
print("| Угадай число |")
print("================")
print("Попытки:",attempt)
print("================")
number = int(input())
os.system("cls")
if number == snumber:
print("===========================")
print("| Поздравляем ты победил! |")
print("===========================")
break
if number < snumber:
print("Больше!")
attempt = attempt + 1
if number > snumber:
print("Меньше!")
attempt = attempt + 1
input()
import random
import os
attempt = 0
snumber = 0
print("Выберите уровень сложности")
print("1. Легкий - Неограниченое число попыток от 0 до 100")
print("2. Нормальный - 15 Попыток от 0 до 250")
print("3. Сложный - 20 Попыток от 0 до 500")
dif = input()
if dif == "1":
snumber = random.randint(0, 100)
attempts_allowed = float('inf') # unlimited attempts
elif dif == "2":
snumber = random.randint(0, 250)
attempts_allowed = 15
elif dif == "3":
snumber = random.randint(0, 500)
attempts_allowed = 20
else:
print("Неверный выбор!")
exit()
os.system("cls")
while attempt < attempts_allowed:
print("================")
print("| Угадай число |")
print("================")
print("Попытки:", attempt)
print("================")
number = int(input())
os.system("cls")
if number == snumber:
print("===========================")
print("| Поздравляем, ты победил! |")
print("===========================")
break
elif number < snumber:
print("Больше!")
else:
print("Меньше!")
attempt += 1
if attempt >= attempts_allowed:
print("Попытки исчерпаны. Загаданное число было:", snumber)
Для чего нужен метод pop(), удаляющий первый элемент во множестве, если в нем априори нет первого элемента. По сути он удаляет рандомный элемент.
Гоша оговорился, множество не первый элемент удаляет, а рандомный, при этом он этот элемент ещё и возвращает.
Допустим нужно перебрать множество: в цикле получаем очередной элемент в переменную с помощью метода pop(), при этом удаляем его из множества, затем с этой переменной проделываем какую-то работу(пишем в базу, например) и переходим к следующему элементу множества.
Тогда, можно использовать remove()
@@DiasAmanzhol-fq5kb для ремува нужно знать значение, тогда как попа этого не требует
Благодарю за урок! Правда, я пока не представляю, как эти множества применять на практике, но надеюсь, что со временем разберёмся.
поясняю: скорее всего будет удобно, если, например нам понадобится сайт, типо спортмастера, где надо будет спросить у человека, каким видом спорта он увлекается. И он, допустим, несколько раз напишет "футбол" и чтобы сильно не нагружать алгоритм, он просто отсеивает повторяющиеся элементы
@@yoyozhik спасибо, так даже можно в некотором роде экономить память на сервере сайта.
@@yoyozhik существует валидация данных пост запроса которая решает эту проблему, плюс на практике юзеру предпочтительнее разрешать выбирать из существующих видов спорта дабы он не сохранял слово писюн в ваш фрозенсет))
2024 год, 36 лет, учим программирование на Python...
В с случайном порядке идут только строки, а цифры в порядке возрастания, а также не уточнил, что команда add добавляет в начало множества.
не всегда в порядке возрастания
потестил. Нифига не всегда добавляет в начало.
Огромная вам благодарность! Серьёзно, такие курсы, как это видео, стоят бешеные деньги. Огромное спасибо за ваш труд!
пишете полную чушь)) это не видео по какой-то технологии типо Селери, а базовые понятия о базовых типах данных. в курсах за "бешенные деньги" не дают ничего того, чего нет в открытом доступе.
этим сообщением не приуменьшаю заслуг автора
@@wellstuff368вы наоборот увеличили заслугу автора, если сами заново перечитаете😅 а так за бешеные деньги и учать основу… оффлайн.
Спасибо за Ваш труд, уважаемый автор! Очередной урок пройден.
интересный момент, что все таки множество нельзя использовать для "перемешки", у меня оно наоборот упорядочило числа:
i = 4
data = {3, 2, 1,"seeet"}
while i < 22:
data.update([i])
i += 1
print (data)
Всегда выводит в строгом порядке от 1 до 21, только строка "seeet" скачет-туда сюда, а 3, 2, 1 (так же как и 2, 3, 1) он переворачивает в 1, 2, 3
Я Python знаю только из видео автора, хотелось бы комментарий от него на этот счет, чтобы уже закрыть этот не укладывающийся в представление о множестве вопрос.
Согласен
Начиная с python 3.7 словари стали упорядоченными
Может быть дело в том что вы создали цикл и поставили туда множества а цикл всегда начинает с меньшего и идёт до большего поэтому хотя вы поставили множества она входит в цикл и принимает вид цикла
@@azizbekmurodov2450 wtf duuude?
Я начинающий, смотрю это уже вторую неделю очень помогает, спасибо огромное!
ТАК ДЕРЖАТЬ!
Что-то мне подсказывается, что множество наоборот сортирует список или кортеж. А вот именно символы строки располагает хаотично)
Попробуй несколько раз выполнить программу - будет произвольный порядок
@@lievsey нет не будет. Если будешь 1 и тот же список тусовать, ничего не изменится
как сделать так что бы оно работало через инпут
3:18 Грамотей! В случае если элементы в множестве типа int или float они ВСЕГДА выводятся в порядке возрастания!
Не всегда.
Сорри бро, но ты ошибся. Проверь пожалуйста!
data = {3, 4, 6, 13, 2233, 9}
print(data)
Результат будет таким: {3, 4, 2233, 6, 9, 13}
@@ИгорьКроха-м2ж результат = {3, 4, 6, 9, 13, 2233}
Вау
а в каком уроке мы до этого изучали сплит ?
eblan
Про списки урок
напрягииииисссь...
Благодарю, очень толково разсказано
Спасибо за видео урок!
1:58 : l, o, h - пххахааххахаха😂
person = {
"user_1": {
"name": "yan",
"second_name": "avin",
"country": {"RUSSIA"},
"hobbies": {"important": "lang", "others": "python"},
}
}
print(person["user_1"]["hobbies"]["others"])
print(person.keys("user_1"))
ребят а если я хочу вывести ключи с первого пользователя как мне в принт персон кейс написать юзер один что бы он все вывел? я в посл строчке написал но питон пишет что я ошибся
Привет. Если вопрос ещё актуален отвечу. Если ты хочешь вывести только ключи юзер_1, тогда пиши:
print(person['user_1'].keys())
@@thankyou9818 привет спасибо за ответ а можно ли вывести только все ключи от хобби например? print(person['user_1']['important'].keys()) так будет? мне ошибку пишет
@@yanavin2964 нет. Если ты хочешь всё ключи от хобби, то тогда пишешь print(person['user_1']['hobbies'].keys()). А если ты пишешь там импотант.кейс то тогда тебе ошибку выведет, потому что импотант является сам кейсом.
@@yanavin2964 если что-то не понял можешь задать вопрос
Просмотрел половину уроков все прекрасно понятно но забывается,придется устранять эту проблему
Youtbe Teacher
Спасибо за труд!
Data = {2, 5, 4, 5, 1}
print(Data)
Run:{1, 2 , 4, 5}
И так всегда при запуске. Это нормально?
ну да
да
data = set('35914')
print (data)
вот так перемешивает
По моему происходит не перемешивание значений. а сортировка!
Начиная с python 3.7 множества стали упорядоченными