<jupyter_start><jupyter_text>Zadanie 1Napisz funkcję, która: * jako argument przyjmuje listę. Lista będzie zawsze zawierać ciąg cyfr zapisany w formacie string* utworzy nową listę, gdzie każdy element będzie sumą cyfr wystepujących w ciągu znaków * zwróci tą listę Dla przykładu zaaplikowanie takiej funkcji do lista1 powinno dać nastepujący rezultat:``` [6, 18, 4]```Wydrukuj przerobione listy.Podpowiedzi: * Konieczne będzie wykorzystanie dwóch pętli for w funkcji* Przeszukiwanie łańcuchów znaków odbywać się może jak w liście albo po indeksach numerycznych - w tym drugim przypadku warto pamiętać o funkcji *len* zwracającej długość<jupyter_code>lista1 = ["0123", "2556", "22"]
lista2 = ["0124", "2356", "122"]
lista3 = ["0125", "2456", "221"]
lista4 = ["0126", "2856", "222"]

def SumaLiczbWLiscie(listaWejsciowa):
  listaWynikowa = []
  
  # Pierwsza pętla przegląda wszystkie elementy listy - każdy element to ciąg znaków
  for element in listaWejsciowa:
    suma = 0

    # druga pętla przegląda każdy znak w tekście
    for znak in element:
      # Ta linijka sumuje kolejne wartości 
      suma += int(znak)
    listaWynikowa.append(suma)
  return listaWynikowa

#Drukujemy wywołania dla kolejnych liczb
print(SumaLiczbWLiscie(lista1))
print(SumaLiczbWLiscie(lista2))
print(SumaLiczbWLiscie(lista3))
print(SumaLiczbWLiscie(lista4))<jupyter_output><empty_output><jupyter_text>Zadanie 2Napisz funkcję, która:* Jako argument przyjmuje listę pojedynczą liczbę* Jeżeli liczba jest podzielna przez 3 zwraca jej wartość podniesioną do sześcianu* W przeciwnym wypadku zwraca wartość podniesioną do kwadratu. Następnie wykorzystaj komendę *map*, aby stworzyć nową listę która zwróci efekty wywołania napisanej przez nas funkcji na przedstawionej poniżej liście liczb.Podpowiedzi: * Do sprawdzenia podzielności wykorzystaj operator modulo (%)* Składnia tworzenia nowej listy za pomocą funkcji *map* poniżej:``` NowaLista = list(map(Funkcja, Początkowa_lista))```<jupyter_code>listaLiczb = [3, 5 , 9, 4]

def podniesieniePotega(liczba):
  if liczba%3 == 0:
    return liczba**3
  else:
    return liczba**2

NowaLista = list(map(podniesieniePotega, listaLiczb))
print(NowaLista)<jupyter_output><empty_output><jupyter_text>Zadanie 3 Przygotuj wyrażenie lambda, które:* jeżeli argument jest ciągiem znaku zwróci jego długość.* w przeciwnym wypadku zwróci tą wartość.Podpowiedzi:* Wykorzystaj funkcję *isinstance** Składnia lambdy z wyrażeniem logicznym wygląda następująco:``` lambda argument: Wartosc_Prawda if Warunek else Wartosc_Falsz```Wydrukuj wynik zastosowania wyrażenia dla zmiennych zdefiniowanych poniżej:<jupyter_code>tekst = "Przykładowy tekst"
liczba = 2 

f = lambda a: len(a) if isinstance(a,str) else a

print("W przypadku tekstu drukowany jest rozmiar: ", f(tekst))
print("W przypadku liczby drukowana jest jej wartość: ",f(liczba))<jupyter_output><empty_output><jupyter_text>Zadanie 4Napiszemy funkcję rekurencyjną, która wyznacza Największy Wspólny Dzielnik (NWD) dwóch liczb za pomocą algorytmu Euklidesa.Algorytm można streścić następująco:* Argumentem są dwie liczby - oznaczmy przez a i b* Jeżeli a > b wykonaj funkcję NWD z argumentami (a-b, b)* Jeżeli a < b wykonaj funkcję NWD z argumentami (a, b - a)* Jeżeli a == b zwróć wartość a<jupyter_code>Liczba1 = 63
Liczba2 = 72

def NWD(a,b):
  if a > b: 
    return NWD(a-b,b)
  if b > a: 
    return NWD(a,b-a)
  else:
    return a

print(NWD(Liczba1, Liczba2))<jupyter_output><empty_output><jupyter_text>Zadanie 5Napisz funkcję która w zależności od decyzji użytkownika zwróci wynik wywołania funkcji f1 lub f2 dla pary liczb. Liczby będące argumentami funkcji oraz decyzję, którą funkcję wywołać przekaż za pomocą polecenia *input*<jupyter_code># Wartości podajemy za pomocą funkcji input - trzeba pamiętać aby dokonać konwersji
a = int(input("Podaj liczbę a:"))
b = int(input("Podaj liczbę b:"))
wybor = int(input("Podaj decyzje: 1 - f1, 2 -f2")) 

def funkcja_wybor(c,d, wybor2): 
  # Lambdy przeniosłem wewnątrz funkcji  
  # Zwróćcie uwagę, że przy takim zapisie nie są one dostępne pozą tą funkcją
  f1 = lambda a,b : min(a,b) + 1
  f2 = lambda a,b : max(a,b) - 2

  if wybor2 == 1:
    return f1(c,d)
  if wybor2 == 2:
    return f2(c,d)

print(funkcja_wybor(a,b,wybor))<jupyter_output><empty_output>
{'fraction_non_alphanumeric': 0.08672276764843385, 'fraction_numerical': 0.022674146797568958, 'mean_word_length': 5.522865853658536, 'pattern_counts': {'":': 0, '<': 22, '<?xml version=': 0, '>': 24, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'chain_length': '5', 'dir': 'jupyter-structured-clean-dedup', 'id': '15725', 'license': 'MIT', 'n_tokens_mistral': 1902, 'n_tokens_neox': 1916, 'n_words': 476, 'path': 'Zajecia 7/Zajecia7_Refresher_solved.ipynb', 'repo_name': 'jakubrybacki/Karowa_Python_Introduction', 'size': '4278'}