#! /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:
#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))