11-ámeliy jumıs: Python programmalastırıw tilinde kóplikler (Sets)

[b]Teoriyalıq bólim:
1. Kóplik (Set) túsinigi:[/b]
Kóplik - bul Python tilindegi qáytalanatuǵın elementlerdi saqlap qalmaytuǵın, tártipsiz hám ózgeriwsheń kollekciya bolıp tabıladı. Kóplikler figuralı qawsırmalar {} menen belgilenedi yamasa set() funkciyası arqalı jaratıladı.
[b]2. Kópliklerdiń tiykarǵı qásiyetleri:[/b]
• Qáytalanatuǵın elementlerdi saqlap qalmaydı
• Tártipsiz (indekslengen emes)
• Ózgeriwsheń (mutable)
• Tek ózgermeytuǵın (immutable) elementlerdi saqlawı múmkin
[b]3. Kópliklerdiń artıqmashılıqları:[/b]
• Tez izlew hám elementlerdi tekseriwde
• Qáytalanatuǵın elementlerdi avtomatik túrde joq etiwde
• Matematikalıq kóplik ámellerinde (birlespe, kesispe, ayırma)
[b]4. Kópliklerdiń kemshilikleri:[/b]
• Tártipsiz bolǵanlıǵı sebepli indeks arqalı elementlerge kirise almaymız
• Tek ózgermeytuǵın elementlerdi saqlawı múmkin
[b]Ámeliy bólim:
1. Kóplik jaratıw:[/b]
# Figuralı qawsırmalar arqalı
fruits = {'alma', 'almurt', 'banan', 'apelsin'}

# set() funkciyası arqalı
numbers = set([1, 2, 3, 4, 5])

# Bos kóplik
empty_set = set()

[b]2. Kóplikke element qosıw:[/b]
fruits.add('juzim')
print(fruits)  # {'alma', 'almurt', 'banan', 'apelsin', 'juzim'}

fruits.update(['ananas', 'qawın'])
print(fruits)  # {'alma', 'almurt', 'banan', 'apelsin', 'juzim', 'ananas', 'qawın'}

[b]3. Kóplikten element óshiriw:[/b]
fruits.remove('banan')
print(fruits)  # {'alma', 'almurt', 'apelsin', 'juzim', 'ananas', 'qawın'}

# Eger element bolmasa qáte bermeydi
fruits.discard('mango')

[b]4. Kóplikler ústin ámellerdi qollanıw:[/b]
set1 = {1, 2, 3, 4, 5}
set2 = {4, 5, 6, 7, 8}

# Birlespe
union_set = set1.union(set2)
print(union_set)  # {1, 2, 3, 4, 5, 6, 7, 8}

# Kesispe
intersection_set = set1.intersection(set2)
print(intersection_set)  # {4, 5}

# Ayırma
difference_set = set1.difference(set2)
print(difference_set)  # {1, 2, 3}

[b]5. Kópliklerdi salıstırıw:[/b]
set1 = {1, 2, 3}
set2 = {1, 2, 3, 4, 5}

print(set1.issubset

[b]ÁMELIY MÍSALLAR[/b]
[b]1. Studentler dizimin kóplik túrinde saqlap, olardı basqarıw:[/b]
# Studentler kópligi
students = {'Aliy', 'Ayjan', 'Berdaq', 'Gúlnara', 'Dawlet'}

# Jańa student qosıw
students.add('Jańabay')
print("Jańa student qosılǵannan keyin:", students)

# Bir neshe student qosıw
new_students = {'Marat', 'Sáwle', 'Timur'}
students.update(new_students)
print("Bir neshe student qosılǵannan keyin:", students)

# Studentti óshiriw
students.remove('Aliy')
print("Aliy óshirilgennen keyin:", students)

# Studentti izlew
search_name = 'Gúlnara'
if search_name in students:
    print(f"{search_name} student diziminde bar")
else:
    print(f"{search_name} student diziminde joq")

[b]2. Eki klasstıń oqıwshıların salıstırıw:[/b]
class_a = {'Aliy', 'Berdaq', 'Gúlnara', 'Jańabay', 'Marat'}
class_b = {'Ayjan', 'Dawlet', 'Gúlnara', 'Sáwle', 'Timur'}

# Eki klassta da bar bolǵan oqıwshılar
common_students = class_a.intersection(class_b)
print("Eki klassta da oqıytugın oqıwshılar:", common_students)

# Tek A klassında bar bolǵan oqıwshılar
only_in_a = class_a.difference(class_b)
print("Tek A klassında oqıytugın oqıwshılar:", only_in_a)

# Barlıq oqıwshılar dizimi
all_students = class_a.union(class_b)
print("Barlıq oqıwshılar:", all_students)

[b]3. Sózlerdiń unikallıǵın tekseriwde kópliklerdi qollanıw:[/b]
text = "Bul bir úlken tekst. Bul tekstte sózler qaytalanıwı múmkin. Biz usı teksttegi unikal sózlerdi tabamız."

# Tekstti sózlerge ajıratıw hám kóplikke aylandırıw
words = set(text.lower().split())

print("Teksttegi unikal sózler sanı:", len(words))
[b]print("Unikal sózler:", words)

4. Sanlar kópligi menen islew:[/b]
numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

# Jup sanlar kópligi
even_numbers = {num for num in numbers if num % 2 == 0}
print("Jup sanlar:", even_numbers)

# Taq sanlar kópligi
odd_numbers = numbers.difference(even_numbers)
print("Taq sanlar:", odd_numbers)

# 5 ten úlken sanlar
greater_than_five = {num for num in numbers if num > 5}
print("5 ten úlken sanlar:", greater_than_five)


[b]5. Kóplikler járdeminde dublikatlardı joq etiw:[/b]
# Dublikatlı dizim
numbers_with_duplicates = [1, 2, 2, 3, 4, 4, 5, 5, 6, 7, 7, 8, 9, 9, 10]

# Kóplik járdeminde dublikatlardı joq etiw
unique_numbers = set(numbers_with_duplicates)

print("Dáslepki dizim:", numbers_with_duplicates)
print("Dublikatları joq etilgen dizim:", list(unique_numbers))

[b]6. Kóplikler menen logikalıq operaciyalardı qollanıw:[/b]
A = {1, 2, 3, 4, 5}
B = {4, 5, 6, 7, 8}
C = {3, 4, 5, 9, 10}

# Barlıq úsh kóplikte bar bolǵan elementler
common_elements = A & B & C
print("Barlıq úsh kóplikte bar bolǵan elementler:", common_elements)

# A yamasa B de bar, biraq C de joq bolǵan elementler
in_a_or_b_not_c = (A | B) - C
print("A yamasa B de bar, biraq C de joq bolǵan elementler:", in_a_or_b_not_c)

# Tek ǵana bir kóplikte bar bolǵan elementler
unique_to_one_set = (A ^ B ^ C) - ((A & B) | (B & C) | (A & C))
print("Tek ǵana bir kóplikte bar bolǵan elementler:", unique_to_one_set)

[b]7. Kópliklerdi qollanıp, tillerdi úyreniw progressin baqlawǵa mısal:[/b]
english_words = {"apple", "book", "cat", "dog", "elephant"}
learned_words = set()

def learn_word(word):
    if word in english_words:
       learned_words.add(word)
       print(f"'{word}' sózi úyrenildi!")
    else:
        print(f"'{word}' sózi dizimde joq.")

def check_progress():
    remaining_words = english_words - learned_words
    progress = (len(learned_words) / len(english_words)) * 100
    print(f"Siz {len(learned_words)} sóz úyrendińiz. ({progress:.2f}% progress)")
    print(f"Qalǵan sózler: {remaining_words}")

# Sózlerdi úyreniw
learn_word("apple")
learn_word("book")
learn_word("sun")  # Bul sóz dizimde joq

# Progressti tekserip kóriw
check_progress()