Python 4 IPiZ
Python 4 IPiZ
Ćwiczenie 4
Kolekcje: lista, tuple (krotka), słownik, zbiór.
Przykład 1
# program oblicza kwadrat liczb 2,4,6,8,10 i tworzy nową listę z wynikami (3 wersje)
# utworzenie listy
list_number = [2, 4, 6, 8, 10]
# pętla for iteruje po indeksie listy (i=0,1,2,3,4). Pierwszy element listy ma indeks 0 -> list_number[0]
for i in range(5):
list_number[i] = list_number[i]**2
print(list_number)
#---------------------------------------------------------------------------------------------
#pętla for iteruje po kolekcji list_number1
list_number1 = [2, 4, 6, 8, 10]
list_square = []
#metoda append() dopisuje do nowej listy kwadrat kolejnych liczb
for i in list_number1:
list_square.append(i**2)
print(list_square)
#---------------------------------------------------------------------------------------------
# Funkcja enumerate() zwraca krotkę(tuplę), której
# pierwszym elementem jest indeks elementu z kolekcji a drugim właściwy element
list_number2 = [2, 4, 6, 8, 10]
--------------------------------------------------------------------------------------------------------------------------------------------------------
Przykład 2
# Użytkownik podaje numer dnia tygodnia, program wyświetla jego nazwę
# utworzenie dwóch list z elementami typu string
day_name = ['poniedziałek', 'wtorek', 'środa', 'czwartek', 'piątek', 'sobota', 'niedziela']
day_number = ['Pierwszy', 'Drugi', 'Trzeci', 'Czwarty', 'Piąty', 'Szósty', 'Siódmy' ]
print("Napiszę nazwę dnia tygodnia. Podaj numer dnia lub <enter>, żeby zakończyć.")
while True:
number=input('Numer dnia: ')
if number == "": #sprawdzenie warunku zakończenia programu
print('Zakończyłeś działanie programu')
break #wyjście z pętli while - zakończenia programu
number=int(number) # konwersja typy string na liczbę całkowitą (int)
if number<0 or number>7: #sprawdzenie czy zakres wprowadzonej wartości jest poprawny
print(f'Wprowadziłeś {number}. Nie ma takiego dnia tygodnia.')
else: #wyświetlenie wyniku: indeks elementu z list zmniejszony o jeden (listy są indeksowane od 0)
print(f'{day_number[number-1]} dzień tygodnia to {day_name[number-1]}.')
2023/2024 1
Język programowania IPiZ laboratorium
Przykład 3
2023/2024 2
Język programowania IPiZ laboratorium
# suma i wartość średnia
print(f'Suma liczb z listy = {sum(numbers)}')
print(f'Średnia liczb z listy = {sum(numbers)/len(numbers)}')
# Napisy i listy
print('\n-----------------------------------\n')
print('napis <-> lista')
# tekst -> lista
text = 'Python'
# type(obiekt)- zwraca typ obiektu
print(f'\nTekst (string): {text} | typ: {type(text)}')
print(f'Tekst od tyłu: {text[::-1]} ')
list_text = list(text)
print(f'Lista: {list_text} | {type(list_text)}')
# metoda join() łączy kolejne elementy listy i rozdziela je separatorem podanym między "".
# Np. "-" -> między elementami listy będzie wstawiony znak - . Wynik zostaje przypisany do zmiennej text1 (string)
text1 = "".join(list_text)
print(f'Tekst (string): {text1} | {type(text1)}')
Przykład 4
# program losuje 4 liczby z zakresu od 1 do 20. Liczby nie mogą się powtarzać.
#metoda sample() - losowy wybór n elementów z kolekcji. Losowanie bez zwracania(wylosowane elementy nie powtarzają się)
from random import sample
2023/2024 3
Język programowania IPiZ laboratorium
los_numbers=sample(base_numbers, 4)
--------------------------------------------------------------------------------------------------------------------------------------------------------
Przykład 5
# Tupla zawiera informacje o studencie: (imię, nazwisko, oceny)
# Oceny zapisane są w postaci listy (lista jest elementem tupli) i mogą być modyfikowane
student_1 = ("Jan", "Kowalski", [4.5, 3.5, 5.0, 3.0])
student_2 = ("Anna", "Nowak", [4.0, 4.5, 4.0, 3.0])
student_3 = ("Piotr", "Wiśniewski", [3.0, 3.5, 3.0, 3.0])
print(student_1)
# zmiana oceny na pierwszym miejscu listy ocen krotki student_1
student_1[2][0] = 5
# dodanie oceny na ostatnim miejscu listy ocen krotki student_1
student_1[2].append(5)
print(student_1)
# usunięcie ostatniej oceny listy ocen krotki student_1
student_1[2].pop(-1)
print(student_1)
# utworzenie listy krotek
students = [student_1, student_2, student_3]
# dodanie nowej oceny - do listy ocen każdego studenta zostanie dodana odpowiednio jedna ocena z listy new_grade
new_grade = [4, 5, 5]
for i in range(3):
students[i][2].append(new_grade[i])
# ‘rozpakowanie krotek’ i wypisanie na ekranie - wartości zostaną przypisane do zmiennych name, last_name oraz listy grades
for student in students:
name, last_name, grades = student
print(name, end=" ")
print(last_name, end=" ")
print(grades, end=" ")
print()
Przykład 6
# program generuje dwa zbiory liczb i sprawdza, które liczby występują jednocześnie w jednym i drugim zbiorze
2023/2024 4
Język programowania IPiZ laboratorium
# operator | - suma zbiorów; operator – różnica zbiorów
set3 = set1 & set2
print(f'Pierwszy zbiór: {len(set1)} liczb, {set1}')
print(f'Drugi zbiór: {len(set2)} liczb, {set2}')
if len(set3)==0:
print('Nie ma liczb występujących równocześnie w dwóch zbiorach')
else:
print(f'Liczby występujące w zbiorze pierwszyn i drugin: {set3}')
Przykład 7
# Słownik. Program wyświetla angielski odpowiednik koloru wpisanego przez użytkownika
# Wpisanie koloru, którego nie ma w słowniku powoduje wyświetlenie odpowiedniego komunikatu
colors={
'czerwony': 'red', 'czarny': 'black', 'żółty': 'yellow', 'biały': 'white',
'różowy': 'pink', 'niebieski': 'blue', 'szary': 'gray', 'zielony': 'green',
'pomarańczowy': 'orange' }
print('Wpisz kolor, żeby zobaczyć jego angielski odpowiednik lub <enter>, żeby zakończyć')
while True:
color = input('Podaj kolor: ')
# wprowadzenie dowolnego znaku zwróci wartość True; tylko znak<enter> -> wartość False i program przejdzie do bloku else:
if color:
# wyświetlenie wartości dla klucza przypisanego do zmiennej color;
# jeżeli takiego klucza nie ma w słowniku zostanie wyświetlony komunikat
print(colors.get(color, 'W słowniku nie ma takiego koloru. '))
else:
print('Kończymy na dziś')
break
Informacje:
Lista: – uporządkowany zbiór elementów dowolnego typu. Każdy element listy ma swój indeks. Indeks listy, która
zawiera n elementów rozpoczyna się od 0 a kończy na n-1. Listę rozpoczyna i kończy nawias kwadratowy, a
poszczególne jej elementy rozdziela przecinek. Np. lista = [1, 2, ‘tekst’, 1.23, 4.2, True, [‘inna lista’, 2], 48].
lista[0]=1, lista[2]=’tekst’, lista[5]=True
Wartości elementów listy mogą się powtarzać, listy są modyfikowalne (mogą ulegać zmianom).
Za pomocą indeksowania możliwe jest przypisanie istniejącemu elementowi listy nowej wartość, ale nie można w ten
sposób utworzyć nowego elementu.
Wyrażenia listowe (ang. list comprehensions): – tworzenie listy (zbioru) na podstawie wartości w istniejących
kolekcjach
lista=[zmienna for zmienna in kolekcja if warunek]
2023/2024 5
Język programowania IPiZ laboratorium
Warunek jest opcjonalny. Przykłady: lista=[x**2 for x in range(1,10)] – zostaje utworzona lista kwadratów kolejnych
liczb od 1 do 10 – [1, 4, 9, 16, 25, 36, 49, 81, 100]; lista=[x for x range(1,100) if x%3==0] – lista liczb podzielnych przez
3 z zakresu od 1 do 100.
Tuple (krotka) – uporządkowana (indeksowalna) kolekcja elementów. Krotka jest niemodyfikowalna (elementy krotki
nie mogą być zmieniane). Elementy krotki mogą się powtarzać.
tuple_example = (1, 2, ‘tekst’, False, 3.7)
Set (zbiór) – elementy zbioru są unikatowe (nie mogą wystąpić dwa takie same elementy). Zbiory są modyfikowalne i
nie są indeksowalne, kolejność elementów zbioru nie jest zachowana
set_example ={1, 2, ‘tekst’, False, 3.7 }
Dict (dictionary - słownik) –zestaw par - klucz: wartość. Słowniki są modyfikowalne – klucz musi być unikatowy.
Kolejność elementów nie jest zachowana
dict_example = {1:’pierwszy’, 2:’drugi’, 3:’trzeci’}
2023/2024 6
Język programowania IPiZ laboratorium
________________________________________________________________________________________________
Zadanie 1
Napisz program, który wylosuje 30 liczb z przedziału <1,100>, a następnie wyświetli najpierw wszystkie wylosowane
liczby parzyste, a potem liczby nieparzyste oraz poda informację ile jest liczb parzystych i nieparzystych.
Zadanie 2
Napisz program, który obliczy sumę cyfr liczby wprowadzonej przez użytkownika.
Zadanie 3
Napisz program, w którym: użytkownik wprowadza oceny <2,5>. Po wprowadzeniu ocen program wyświetla
informację: ile ocen zostało wprowadzonych, wyświetla wszystkie oceny w porządku rosnącym, wyświetla informację
ile było poszczególnych ocen, oblicza średnią ocen.
Zadanie 4
Napisz program, który wyświetli n zestawów 6 liczb z zakresu od 1 do 49. Liczby w ramach zestawu nie mogą się
powtarzać. Wartość n wprowadza użytkownik.
Zadanie 5
Napisz program, który wygeneruje 50 liczb całkowitych z zakresu od 1 do 50, a następnie usunie duplikaty i wyświetli
liczby w porządku rosnącym oraz wyświetli liczby z tego zakresu które nie zostały wylosowane.
Zadanie 6
Napisz program, który po wpisaniu nazwy figury geometrycznej wyświetli wzór na pole powierzchni tej figury.
Minimalna liczba figur – 4 (np. prostokąt, trójkąt, koło…)
Zadanie A
Napisz program, w którym użytkownik wprowadza tekst, a program wyświetla ten sam tekst wstawiając spację
między poszczególne znaki wprowadzonego tekstu. Program kończy działanie po wprowadzeniu pustego tekstu
(naciśnięciu klawisza <enter>). Przykład: ‘Wprowadzony tekst’ ‘W p r o w a d z o n y t e k s t’.
Zadanie B
Napisz program, który dodaje nowego użytkownika. Użytkownik wpisuje nazwę. Program sprawdza, czy użytkownik o
takiej nazwie już istnieje. Jeżeli nie, to dodaje nowego użytkownika i wyświetla odpowiedni komunikat. Jeżeli
użytkownik istnieje ponownie pyta o nazwę. Uwaga ! wykorzystaj odpowiednią kolekcję i wprowadź co najmniej trzy
nazwy istniejących użytkowników przed uruchomieniem programu.
Zadanie C
Napisz program, który losuje liczbę całkowitą od 1 do 100. Następnie program pyta użytkownika o liczbę i wyświetla
informację, czy wprowadzona przez użytkownika liczba jest równa wylosowanej (koniec rozgrywki), za mała czy za
duża. Pytania są ponawiane aż do momentu odgadnięcia liczby. Program wyświetla informację ile prób było
potrzebnych do odgadnięcia liczby.
____________________________________________________________________________________________
2023/2024 7