Technologie Informacyjne i Komunikacyjne

#! /usr/bin/python3
# -*- coding: utf-8 -*-

Funkcje ‘def’:

Zadanie 1. Napisz program, który wypisze pierwsze N liczb naturalnych w kolejności rosnącej i malejącej w osobnych kolumnach:

0 4
1 3
2 2
3 1
4 0
def kolumny(n):
    for i in range(0,n+1):
        print(i, n-i)

if __name__ == '__main__':
    liczba = int(input('Podaj liczbę naturalną: '))
    kolumny(liczba)
Zadanie 2. Napisz program, który prosi o podanie liczby naturalnej, a następnie wypisuje z ilu cyfr składa się wpisana wartość, a także informację o sumie tworzących ją cyfr. Dla uproszczenia załóż, że podana liczba jest poprawna (czyli rzeczywiście naturalna).
def cyfry(n):
    lista = [int(i) for i in str(n)]
    return len(lista), sum(lista)
Zadanie 3. Liczby doskonałe to takie, które są sumą swoich dzielników właściwych (wikipedia). Napisz program, który dla podanej liczby naturalnej sprawdza, czy jest ona liczbą doskonałą.
def dzielniki(x): 
    d = [] #lista na dzielniki
    for a in range(1, (int(x/2) + 1)):
        if x % a == 0: 
            d.append(a) 
    return d 
  
if __name__ == '__main__':
    n = int(input('Podaj liczbę: '))
    suma = 0
    iloczyn = 1
    for i in dzielniki(n):
        suma += i #zliczamy sume
        iloczyn *= i #i iloczyn dzielnikow
    print ("Liczba " + str(n) + ("" if (suma == n) else " nie") + " jest liczba doskonala pierwszego stopnia")
    print ("Liczba " + str(n) + ("" if (iloczyn == n) else " nie") + " jest liczba doskonala drugiego stopnia")
Zadanie 4. Napisz program, który:
  • utworzy pustą listę i wypełni ją pięcioma liczbami losowymi z dowolnego zakresu, np. [−1,1] (do generowania liczb możesz użyć np. funkcji uniform z modułu random, której wywołanie uniform(a, b) zwraca liczbę z przedziału [a, b]);
  • wypisze po kolei wszystkie elementy listy wraz z indeksami;
  • wypisze długość listy, czyli liczbę jej elementów;
  • znajdzie i wypisze największy element listy oraz jego indeks.
#import random as rm # I mozliwa opcja importowania biblioteki/modulu
import random # II mozliwa opcja importowania biblioteki/modulu

#n = random.uniform(-1,1)

lista = []

for i in range(5):
    lista.append(random.uniform(-1,1))

for i, liczba in enumerate(lista):
    #print("indeks[",i,"]: ", liczba) # pierwsza mozliwosc zapisu
    print(f"indeks[{i}]: {liczba}")

print(len(lista))

indeks_max = lista.index(max(lista))

print("najwieksza wartosc ", max(lista)," i jej indeks", indeks_max)
Zadanie 5. Napisz dwie funkcje obliczające silnię liczby podanej jako argument: w sposób iteracyjny i rekurencyjny. Przetestuj ich działanie. Porównaj́ wynik z wynikiem obliczonym przez funkcję factorial z biblioteki math.
import math

def silnia(n):
    iloczyn = 1
    for i in range(2, n+1):
        iloczyn *= i
    return iloczyn

def silnia_r(n):
    if n==0:
        return 1
    else:
        return n*silnia_r(n-1)

if __name__=='__main__':
    x = int(input("podaj liczbe: "))
    print('iteracyjnie:', silnia(x))
    print('rekurencyjnie:', silnia_r(x))
    print('z biblioteki math:', math.factorial(x))