Odpakowywanie


    
    1. Wstęp do wstępu
    def retTuple(x, y):
      # Użyj przecinka, aby utworzyć jednoelementową krotkę
      result = x * y,
      return result


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    2. Wstęp właściwy
    def sums(numbers):
      # Inicjalizuj zmienne do przechowywania sum
      sum_even = 0
      sum_odd = 0
      
      # Iteruj się po liście i sumuj elementy na pozycjach parzystych i nieparzystych
      for i, num in enumerate(numbers):
          if i % 2 == 0:
              sum_even += num
          else:
              sum_odd += num
      
      # Zwróć wynik w postaci krotki
      return sum_even, sum_odd


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    3. And now for something completely different
    monty = ( "completely different.",  "And now for", "something" )
    # Rozpakowanie krotki i wyświetlenie poprawnego cytatu
    x, y, z = monty
    print(y, z, x)

    
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    4. Symbol zastępczy
    def second_element(sequence):
      # Inicjalizuj zmienną do przechowywania drugiego elementu
      second = None
      
      # Iteruj się przez elementy krotki z użyciem enumerate
      for index, value in enumerate(sequence):
          # Jeśli jesteśmy na drugim elemencie (indeks 1), przypisz go do zmiennej second
          if index == 1:
              second = value
      
      # Zwróć drugi element
      return second

    
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    5. Ćwiczenie - BMI
    def bmi(person):
      # Rozpakowanie danych z listy person
      name, birthdate, weight_kg, height_cm = person
      
      # Przeliczenie wzrostu z cm na m
      height_m = height_cm / 100
      
      # Obliczenie wartości BMI
      bmi_value = round(weight_kg / (height_m ** 2), 2)
      
      return bmi_value


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    6. Zbieranie
    def cityCountry(data):
      # Rozpakowanie pierwszych dwóch elementów listy, resztę zbierzmy w jednej zmiennej
      city, country, *rest = data
      
      # Połączenie nazwy miejscowości i kraju oddzielonych przecinkiem i spacją
      result = city + ', ' + country
      
      return result

    
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    7. Ćwiczenie - przedostatni
    def before_last(sequence):
      before_last_element = None
      last_element = None
      
      for item in sequence:
          before_last_element, last_element = last_element, item
      
      return before_last_element


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    8. Ćwiczenie: Rekurencyjna długość listy
    def length(sequence, licznik=0):
      if bool(sequence) == True:
          licznik += 1
          _, *sequence = sequence
          return length(sequence, licznik)
  
      else:
          return licznik
    
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    9. Funkcja enumerate()
    def findGreater( oil, value ):
      odp = []
      for i, el in enumerate(oil):
          if el >= value:
              odp.append(i)
      
      return odp
          
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    10. Ćwiczenie - uznania
    def dashFormat(password_1, password_2, letter):
      # Zmiana litery na małe litery, aby ułatwić porównanie
      password_1 = [c.lower() for c in password_1]
      letter = letter.lower()
  
      # Przeszukiwanie pierwszego hasła w poszukiwaniu litery
  
      for i, c in enumerate(password_1):
          if c == letter:
              # Znaleziono literę, uzupełnienie drugiego hasła
              password_2[i] = letter
  
      return password_2


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    11. Ćwiczenie - konwersja na system dziesiętny
    def valueToDecimal(value, base):
      decimal_value = 0
      value = value[::-1]  # Odwróć wartość, aby łatwiej było obliczyć wartość dziesiętną
      
      for i, digit in enumerate(value):
          decimal_value += int(digit) * (base ** i)
      
      return decimal_value
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    12. Funkcja enumerate() cd.
    def monthReport(data):
      result = []  # Inicjalizuj pustą listę na wynik
      
      for day_number, (total_tests, positive_tests) in enumerate(data, 1):
          if positive_tests > 0.5 * total_tests:  # Warunek na więcej niż 50% testów pozytywnych
              result.append(day_number)
      
      return result
    
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    13. Funkcja zip()
    def weightedRating(rating, weight):
      # Zainicjuj pustą listę wynikową
      result = []
      
      # Iteruj przez odpowiadające sobie elementy rating i weight
      for r, w in zip(rating, weight):
          # Oblicz ocenę pomnożoną przez wagę i zaokrąglij do jednego miejsca po przecinku
          weighted_score = round(r * w, 1)
          # Dodaj obliczoną wartość do listy wynikowej
          result.append(weighted_score)
      
      return result



- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    14. Ćwiczenie - słownik niem.-ang.
    def gerEngDict(ger, eng):
      # Użyj funkcji zip() do połączenia dwóch list w pary
      pairs = zip(ger, eng)
      
      # Utwórz słownik za pomocą wyrażenia słownikowego
      dictionary = {ger_word: eng_word for ger_word, eng_word in pairs}
      
      return dictionary
      

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 

    15. Ćwiczenie - egzaminy
    def who_failed(reports, thresholds):
      # Inicjuj pustą listę na niezdanych uczniów
      failed_students = []
      
      # Iteruj przez listę wyników i progi zdawalności
      for i in range(len(reports)):
          # Pobierz imię i wynik ucznia z raportu
          name, score = reports[i]
          
          # Pobierz próg zdawalności dla danego egzaminu
          threshold = thresholds[i]
          
          # Sprawdź, czy wynik jest mniejszy od progu zdawalności
          if score < threshold:
              # Jeśli tak, dodaj imię ucznia do listy niezdanych
              failed_students.append(name)
      
      return failed_students


- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -