24. Napišite program koji traži od korisnika da unese naziv Python
varijable, i štampa „Ispravan naziv varijable“ ako je naziv varijable
u skladu sa pravilima, a štampa „Neispravan naziv varijable“
ako naziv nije u skladu sa pravilima za naziv Python varijable.

naziv_varijable = input('Unesite ime Python varijable: ')
zastavica = 0
for c in naziv_varijable:
    if not (c.isalpha() or c.isdigit() or c == '_'):
        print('Naziv varijable sadrzi nedozvoljeni karakter:',c)
        zastavica = 1
if not(naziv_varijable[0].isalpha() or naziv_varijable[0] =='_'):
    print('Naziv varijable pocinje pogresnim karakterom:',c)
    zastavica = 1
if zastavica == 0:
    print('Naziv varijable je ispravan')
        
23. Tražite od korisnika da unese jedan ceo broj, pa proverite i štampajte
da li je taj broj prost ili ne (broj je prost ako nije deljiv ni sa jednim                           
brojem osim sa brojem 1 i sa samim sobom).

broj = eval(input('Unesite broj: '))
zastavica = 0
for i in range(2,broj):
    if broj % i == 0:   # deljiv sa i
        zastavica = 1
if zastavica == 0:
    print('Broj',broj,'je prost')
else:
    print('Broj',broj,'nije prost')
    
22. Napišite program koji traži od korisnika da unese jednu reč.
Presložite slova iz reči tako da budu alfabetski uređena (sortirana)
i štampajte tako uređenu teč.
Na primer, abracadabra treba da postane aaaaabbcdrr.

abeceda = 'abcdefghijklmnopqrstuvwxyz'
s = input('Unesite rec: ')
novo_s=''
for c in abeceda:
    if c in s:
        novo_s = novo_s + c*s.count(c)
print(novo_s)      

21. Napišite program koji traži od korisnika da unesu
svoje ime i prezime malim slovima,
pa kapitalizuje prva slova svakog dela imena.

ime_i_prezime = input('Unesite ime i prezime malim slovima: ')
pozicija_razmaka = ime_i_prezime.index(' ')
ime = ime_i_prezime[:pozicija_razmaka]
prezime = ime_i_prezime[pozicija_razmaka+1:]
novo_ime_i_prezime = ime.capitalize()+' '+prezime.capitalize()
print(novo_ime_i_prezime)

20. Napišite program koji traži od korisnika da unese reč pa odredi
da li je uneta reč palindrom ili ne. Palindrom je reč koja se čita
jednako sleva na desno kao s desna na levo ( na primer: ana voli milovana).

rec = input('Unesite rec: ')
if rec == rec[::-1]:
    print('Rec',rec,'jeste palindrom')
else:
    print('Rec',rec,'nije palindrom')
    
19. Jedan jednostavan način da se proceni broj reči u stringu je da se
prebroji broj blanko znakova u stringu. Napišite program koji
traži od korisnika da unese tekst, a onda štampa broj reči u tom tekstu.

tekst = input('Unesite tekst: ')
print('Broj reci u tekstu je: ',tekst.count(' ')+1)

18. Napišite program koji traži od korisnika da unese string.
Program zatim treba da štampa sledeće:
    * Ukupan broj znakova u stringu
    * Prvi znak u stringu
    * Zadnja tri znaka iz stringa
    * Ceo string unazad ( palindrom )
    * String sa svim velikim slovima
    * String u kome je svako a zamenjeno sa e

s = input('Unesite neki string: ')
print('Duzina stringa je',len(s))
print('Prvi znak u stringu je:',s[0])
print('Zadnja tri znaka u stringu su:',s[-3:])
print('String procitan unazad je',s[::-1])
print('String sa svim velikim slovima:',s.upper())
print('String u kome je svako a zamenjeno sa e:',s.replace('a','e'))

17. Tražite od korisnika da unese 10 rezultata nekog testa.
Napišite program koji radi sledeće:
    * Štampa najveći i najmanji rezultat.
    * Štampa prosečan rezultat.
najmanji = eval(input('Unesite rezultat testa: '))
najveci = najmanji
zbir = najveci
for i in range(9):
    uneti_rezultat = eval(input('Unesite rezultat testa: '))
    zbir += uneti_rezultat
    if uneti_rezultat > najveci:
        najveci = uneti_rezultat
    if uneti_rezultat < najmanji:
        najmanji = uneti_rezultat
print('Najveci rezultat je',najveci,'a najmanji rezultat je',najmanji)
print('Prosecan rezultat je', zbir/10)

16. Napišite program koji zamenjuje vrednosti tri varijable x, y, i z,
tako da x dobije vrednost y, y dobije vrednost z, a z dobije vrednost x.
x=1
y=2
z=3
print(x,y,z)
x,y,z = y,z,x # moguce u Paythonu, ali ne u nekim drugim jezicima 
print(x,y,z)


15. Napišite program koji traži od korisnika da unese neki broj,
a zatim štampa sumu svih delioca toga broja.
Suma svih delioca nekog broja je važna funkcija u teoriji brojeva.

n = eval(input('Unesite ceo broj > 0: '))
suma = 0

for i in range(1,n+1):
    if n % i == 0:    # broj i je delioc broja n
        suma = suma + i
print('Suma svi delioca broja',n,'je',suma)

14. Napišite program koji izračunava sumu 1-2+3-4+…+1999-2000.

s1 = 0
for i in range(1,2000,2):   #zbir 1+3+5+...+1999
    s1 = s1 + i
s2 = 0
for i in range(2,2001,2):  #zbir 2+4+6+...+2000
    s2 = s2 + i

print('1-2+3-4+…+1999-2000 =',s1-s2)

13. Napišite program kojim se izračunava i štampa faktorijel nekog
unetog broja. Faktorijel, n!, nekog broja n je proizvod svih celih
brojava između 1 i n, uključijući n. Na primer, 5!=1·2·3·4·5=120.

n = eval(input('Unesite ceo broj > 0: '))
fakt = 1
for i in range(2,n+1):
    fakt = fakt*i
print(n,'! = ',fakt,sep='')

12. Napišite program koji traži od korisnika da unese broj sekundi a
onda štampa koliko je to sati, minuta i sekundi.
Na primer 4000 sekundi je 1 sat, 6 minuta i 40 seconds.

vreme = eval(input('Broj sekundi: '))
sati = vreme // 3600
ostatak = vreme - sati*3600  # ostatak = vreme % 3600
minuti = ostatak // 60
sekundi = ostatak % 60

print('U',vreme,'ima' ,sati,'sati',minuti,'minuta i',sekundi,'sekundi')


11. Napišite program kojim se generiše slučajan broj x, između 1 i 50,
i slučajan broj y između 2 i 5, pa izračunava i štampa x*y.
from random import randint
x = randint(1,50)
y = randint(2,5)
print(x,'x',y,'=',x*y)


10. Napišite program koji traži od korisnika da
unese jedan string i jedno slovo. Program treba da
štampa indeks prvog pojavljivanja
unetog slova ili poruku da string ne sadrži to slovo.

s = input('Unesite string: ')
c = input('Unesite slovo: ')
z = 0
for i in range(len(s)):
    if s[i] == c:
        if z  == 0:
            z = 1
            p = i
if z == 0:
    print('Slovo ',c,'se ne nalazi u stringu',s)
else:
    print('Prvo pojavljivanje slova',c,'u stringu',s,'je na poziciji',p)
        
9. Napišite program koji traži od korisnika da unese
lozinku. Ako unese ispravnu lozinku program mu
saopštava da se ulogovao u sistem. U suprotnom program
traži da ponovo unese lozinu. Ako ni u ponovljenom unosu
korisnik ne unese ispravnu
lozinku program mu saopštava da je izbačen iz sistema.

sistemska_lozinka = '123456'
lozinka = input('Unesite lozinku: ')
if lozinka == sistemska_lozinka:
    print('Ulogovani ste u sistem')
else:
    print('Pogresna lozinka, pokusajte ponovo')
    lozinka = input('Unesite lozinku')
    if lozinka == sistemska_lozinka:
        print('Ulogovani ste u sistem')
    else:
        print('Pogresna lozinka, izbaceni ste iz sistema')



8. Napišite program koji koristi for petlju da štampa
slova iz unetog stringa, jedno slovo u liniji,
a ispred slova redni broj slova u unetom stringu.

s = input('Unesite neki string')
for i in range(len(s)):
    print(i+1,s[i])

7. Napišite program koji traži od korisnika da unese
neki broj pa štampa "DELJIV" ako je broj deljiv sa
brojem 2 ili brojem 5.

broj = eval(input('Unesite broj: '))
if broj % 2 == 0 or broj % 5 == 0:
    print('DELJIV')

6. Godina je prestupna ako je deljiva sa 4,
izuzev godina koje su deljive sa 100 a nisu deljive
sa 400. Napisati program koji traži od korisnika da
unese godinu i štampa da li je ona prestupna ili ne.

godina = eval(input('Unesite godinju: '))
if godina % 4 ==0:
    if godina % 100 == 0:
        if godina % 400 == 0:
            print('Prestupna')
        else:
            print('Nije prestupna')
    else:
        print('Prestupna')           
else:
    print('Nije prestupna')
    
5. Prodavnica naplaćuje $12 po jedinici proizvoda
ako kupujete manje od deset proizvoda.
Ako kupujete između 10 i 99 proizvoda, cena je $10
po proizvodu. Ako kupujete 100 ili više od 100
proizvoda cena je $7 po proizvodu. Napišite program
koji traži od korisnika da unese koliko proizvoda
kupuje i štampa ukupnu cenu za tu kupovinu.

kolicina = eval(input('Koliko proizvoda kupujete: '))
if 0 < kolicina < 10:
    print('Iznos za placanje:',kolicina*12)
elif 10 <= kolicina < 100:
    print('Iznos za placanje:',kolicina*10)
elif kolicina >= 100:
    print('Iznos za placanje:',kolicina*7)
else:
    print('Pogresna kolicina')

4. Generišite jedan slučajan broj između 1 i 10.
Tražite od korisnika da pogodi broj i štampajte
odgovarajuću poruku ako je pogodio broj ili ako nije.

from random import randint
slucajan_broj = randint(1,10)
for i in range(5):
    pokusaj = eval(input('Vas pokusaj: '))
    if pokusaj == slucajan_broj:
        print('Pogodili ste')
    else:
        print('Niste pogodili',slucajan_broj)


3. Napišite program koji koristi četiri for petlje
da štampa sledeči niz slova:
    AAAAAAAAAABBBBBBBCDCDCDCDEFFFFFFG

for i in range(10):
    print('A',end='')
for i range(7):
    print('B',end='')
for i in range(4):
    print('C',end='') # print('CD',end='')
    print('D',end='')
print('E',end='')
for i in range(6):
    print('F',end='')
print('G') 
    
2. Napišite program koji koristi for petlju da
štampa brojeve 100, 98, 96, …, 4, 2. Takodje štampati
koliko među njima ima onih koji su deljivi sa 3.

brojac = 0
for i in range(100,0,-2):
    print(i)
    if i % 3 == 0:
        brojac += 1
print('Deljivih sa 3:', brojac)


1. Napišite program koji koristi for petlju da
štampa brojeve 8, 11, 14, 17, 20, …, 83, 86, 89.
Takodje štampati i njihov zbir.

zbir = 0
brojac = 0
for i in range(8,90,3):
    print(i)
    zbir = zbir + i
    brojac += 1

print('Zbir svih brojeva',zbir)
print('Broj brojeva',brojac)

# drugi nacin za generisanje brojeva
n=(89-8)//3 + 1
s = 8
for i in range(n):
    print(s)
    s = s + 3