Python vježbe nizovi

1.) Minimum i maksimum niza

niz=[0]*10
min=0
max=0

#unos podataka u niz
for i in range (0,10):
    niz[i]=int(input("unesite %d. broj: " %(i+1)))

#početna vrijednost minimuma i maksimuma
min=max=niz[0]

#razmislite zašto ovdje piše (1,10) a ne (0,10)
#obratite pažlju na ispis, 
print("Niz:",end=" ")
for i in range (1,10):
    if min>niz[i]:
        min=niz[i]
    elif max<niz[i]:
        max=niz[i]

for i in range (0,10):
    print(niz[i],end=" ")

print()
print("Najveći broj u nizu:",max)
print("Najmanji broj u nizu:",min)
#Pokušajte rješiti koristeći while petlju

2.) pretvaranje iz dekadskog u binarni sustav

niz=[0]*8

u=int(input("unesite broj: "))
#provjera unosa 
if u>255 or u<0:
    print("Pogrešan unos")
else:    
    #preračunavanje iz dekadskog u binarni sustav
    i=7
    while True:
        if u==0:
            break
        else:
            niz[i]=u%2
            u=u//2
        i=i-1
    #ispis podataka
    for i in range(0,8):
        print(niz[i],end="")
#razmislite zašto nije moguće pretvoriti 256 u binarni oblik
#izmijenite kod tako da pretvara brojeve između 0 i 1023 u binarne
#koristite for petlju umjesto while za pretvaranje u binarni sustav        
#Napredno odrediti potrebnu veličinu niza prema unesenom broju
#napišite algoritam za pretvaranje iz dekadskog u oktalni sustav

3.) Pretvaranje iz binarnog u dekadski

'''
koristimo samo input() iz razloga što unosimo znakovni niz
binarne brojeve nije praktično unositi u brojevne nizove
pokušajte unjeti binarni broj u brojevni niz kao i do sada
npr. niz=[0]*8 pa će vam biti jasnije
'''
bin=input("Unesite binarni broj: ")
#fumkcija len() nam vraća veličinu niza
#u prijevodu broj znakova koje smo unjeli

velicina=len(bin)-1
potencija=0
broj=0

for i in range (velicina,-1,-1):
#funkcija int() pretvara znakove u brojeve
#drugi način je:
#if bin[i]=="1" sada smo broj 1 pretvorili u znak "1"#na
    if int(bin[i])==1:
        broj=broj+2**potencija
    potencija=potencija+1

print("broj u dekadskom iznosi:",broj)
#napišite algoritam pomoću while petlje
#osmislite svoj algoritam

4.) Provjera palindroma

rijec=input("unesite riječ: ")

duzina=len(rijec)
provjera=1
i=0
j=duzina-1

while True:
    if rijec[i]!=rijec[j]:
        provjera=0
        break
    elif i==j or i>j:
        break
    i=i+1
    j=j-1

if provjera==1:
    print("Riječ je palindrom")
else:
    print("Riječ nije palindrom")
#napišite algoritam koristeći for petlju

5.) Računanje površine pravokutnika

niz=[0]*12

#označava redni broj pravokutnika
br=1
#Unos stranica pravokutnika
for i in range (0,12,3):
    print("Unesite stranice %d. pravokutnika"%br)
    niz[i]=int(input("Unesite stranicu a: "))
    niz[i+1]=int(input("Unesite stranicu b: "))
    niz[i+2]=niz[i]*niz[i+1]
    #razmislite o tome čemu služi ovaj uvjet
    if i<9:
        print("----------------------------------------")
    br=br+1

#početna vrijednost maksimuma
max=niz[2]

#razmislite o brojevima (2,12,3) u for petlji
for i in range (2,12,3):
    if max<niz[i]:
        max=niz[i]


#ispis površina pravokutnika
print("========================================")
print("Površine svih pravokutnika:",end=" ")
for i in range (2,12,3):
    print(niz[i],end=" ")
print()

print("Najveća površina pravokutnika iznosi:",max)

'''
1.  Izmijenite program na način da računa površine trokuta te
    ispisuje najveću površinu.
2.  Izmijenite program tako da u niz unosite stranice pravokutnog
    trokuta a umjesto površine izračunajte duljinu hipotenuze.
    program treba ispisati najdužu i najkraću hipotenuzu.
3.  Izmijenite kod iz 2. zadatka tako da korisnik unosi
    željeni broj trokuta sa time da taj broj mora biti
    između 1 i 30 a niz mora biti statičan niz=[0]*90
    izračunati dijagonale, odrediti najdužu i najkraću
    dijagonalu te prosječnu duljinu dijagonale.    
'''

6.) Euklidov algoritam – najveća zajednička mjera

a=int(input("Unesite a: "))
b=int(input("Unesite b: "))

if a<b:
    temp=a
    a=b
    b=temp
    
while b != 0:
    ostatak=a%b
    a=b
    b=ostatak

print("Najveća zajednička mjera:",a)
'''
Pokušajte implementirati pomoću nizova. Prvi niz dužine 10
koristi za unos parova brojeva niz1[n]=a niz1[n+1]=b
dok se drugi niz duljine 5 koristi za pohranu zajedničkih
djelitelja parova brojeva iz niza 1.
'''

7.) Za napredne – Određivanje prostih brojeva

n=int(input("Unesite broj za provjeru: "))

#krećemo sa pretpostavkom da broj nije prost
#varijablu test postavljamo na laž test=False
test=False
#brojevi 2 i 3 su sigurno prosti stoga test=True
if n==2 or n==3:
    test=True

#Brojevi 0 i 1 nisu prosti iz tog razloga ih preskačemo.
#Zanimaju nas brojevi veći od 3. Također jedini parni
#prosti broj je 2, ostali parni brojevi nas ne zanimaju.
#Zato moramo provjeriti je li n>3 i je li n neparan broj.
#Ukoliko su obje tvrdnje istinite, provjeravamo dalje.

elif n>3 and n%2!=0:
    #postavljamo test na istina
    #petlja određuje je li naša pretpostavka ispravna.
    test=True
    '''
    petlja kreće od 3 i povečava se za 2 (3,n,2)
    pošto smo izbacili parne brojeve nema smisla
    dijeliti sa njima i dodatno ih provjeravati
    n**0.5 daje korijen broja npr. 11**0.5=3.32
    kada taj broj pretvorimo u cjelobrojni funkcija int()
    dobivamo int(3.32)=3 toome dodamo 1 što iznosi 4
    znači naša petlja će se kretati u rasponu (3,4)
    također možemo koristiti (3,n//2+1,2) ali rješenje
    sa korijenom broja je preciznije
    '''
    for i in range(3,int(n**0.5)+1,2):
        #ukoliko ne postoji ostatak dijeljenja n%i==0
        #možemo sa sigurnošću tvrditi da broj nije prost
        if n%i==0:
            #postavljamo test na laž i izlazimo iz petlje
            test=False
            break

#Na kraju provjeravamo varijablu test
#ako je istina broj je prosti u suprotnom nije
if test==True:
    print("%d je prosti broj" %n)
else:
    print("%d nije prosti broj"%n)

#Pokušajte osmisliti svoje rješenje

7.1.) Za napredne – Algoritam za određivanje prostih brojeva unutar niza

niz1=[0]*10
niz2=[0]*10

#unos podataka u niz
for i in range (0,10):
    niz1[i]=int(input("unesite %d. broj: " %(i+1)))

k=0
for i in range (0,10):
    n=niz1[i]
    test=False
    if n==2 or n==3:
        test=True
    elif n>3 and n%2!=0:
        test=True
        for j in range(3,int(n**0.5)+1,2):
            if n%j==0:
                test=False
                break
    if test==True:
        #unos podataka u drugi niz i povećanje brojača k
        niz2[k]=n
        k=k+1

#Ispis podataka
print("Prosti brojevi: ",end="")
for i in range (0,10):
    if niz2[i]==0:
        break
    else:
        print(niz2[i],end=" ")
print()
#ispravite nedostatak, ukoliko ne postoji niti jedan prosti broj,
#program treba ispisati poruku za korisnike.
#Modificirajte, usavršavajte, igrajte se...

8.) Pomoć pri izradi programa loto

import random

for i in range(0,7):
    # Funkcija koja vraća nasumične brojeve između 1 i 39
    print (random.randint(1, 39),end=" ")

9.) Loto – za one koje zanima

import random
bubanj=[0]*7
listic=[0]*7

iznos=int(input("Unesite iznos dobitka: "))

i=0
while True:
    broj=random.randint(1,39)
    test=True
    j=0
    while bubanj[j]!=0:
        if broj==bubanj[j]:
            test=False
            break
        j=j+1
    if test==True:
        bubanj[i]=broj
        i=i+1
    if i==7:
        break

print("Unos listića")
i=0
while True:
    unos=int(input("Unesite %d. broj: " %(i+1)))
    test=True
    if unos<1 or unos>39:
        test=False
    else:
        j=0
        while listic[j]!=0:
            if unos==listic[j]:
                test=False
                break
            j=j+1
    if test==True:
        listic[i]=unos
        i=i+1
    else:
        print("Pogrešan unos!")
    if i==7:
        break

pogodak=0
for i in range (0,7):
    for j in range (0,7):
        if bubanj[i]==listic[j]:
            pogodak=pogodak+1
            break

print()
print ("Ispis rezultata:",bubanj)
print ("Ispis vašeg listića:",listic)
print ("Broj pogodaka:",pogodak,"od 7")

if pogodak<4:
    print("Na žalost niste dobili ništa.")
elif pogodak==4:
    print("Čestitamo, osvojili ste:",iznos*0.01,"Kn")
elif pogodak==5:
    print("Čestitamo, osvojili ste:",iznos*0.1,"Kn")
elif pogodak==6:
    print("Čestitamo, osvojili ste:",iznos*0.5,"Kn")
elif pogodak==7:
    print("Čestitamo, osvojili ste:",iznos,"Kn")
input()

Odgovori

Vaša adresa e-pošte neće biti objavljena. Nužna polja su označena s *

Možete koristiti ove HTML oznake i atribute: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>