Python - zadatak

poruka: 9
|
čitano: 5.879
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
9 godina
neaktivan
offline
Python - zadatak

Dakle treba učitati broj koji će ga ispisati po svim bazama od 2 do 16. 

Koristio sam while petlju ali mi baca krivi rezultat ako je broj manji od 15, kakva pomoć?

 
0 0 hvala 0
11 godina
neaktivan
offline
Re: Python - zadatak

Postaj kod koji si napisao, teško je vidjeti u čemu je problem bez toga.

9 godina
neaktivan
offline
Re: Python - zadatak

Rjesenje:

http://repl.it/6hr

enjoy

 

<spoiler>

 

broj = input ("Unesi broj >> ")

 

def pretvorba(broj):

   baza = 2

   while baza <= 16:

     rezultat = ""

     trenutni_broj = broj   

     while trenutni_broj:

       modulo = trenutni_broj % baza

       trenutni_broj = trenutni_broj // baza

       rezultat = chr(48 + modulo + 7*(modulo > 9)) + rezultat

     print "Baza(%s)" %baza, "Pretvoreno >", rezultat     

     baza+=1

 

pretvorba(broj)

 

</spoiler>
Poruka je uređivana zadnji put čet 18.12.2014 17:19 (c0by).
11 godina
neaktivan
offline
Re: Python - zadatak

More pythonic verzija istog koda:

  • range umjesto while petlje s inkrementom,
  • divmod umjesto dvije odvojene modulo+cjelobrojno dijeljenje
  • eksplicitna lista znamenki umjesto čarolije
  • izbačena funkcija koja se poziva samo jednom i radi sve

 

ZNAMENKE = '0123456789ABCDEF'

broj = int(input("Unesi broj >> "))

for baza in range(2, 17):
    rezultat = ""
    trenutni_broj = broj
    while trenutni_broj:
        trenutni_broj, modulo = divmod(trenutni_broj, baza)
        rezultat = ZNAMENKE[modulo] + rezultat
    print("Baza(%s)" %baza, "Pretvoreno >", rezultat)

Poruka je uređivana zadnji put sub 20.12.2014 14:00 (Bobobo-bo Bo-bobo).
9 godina
neaktivan
offline
Python - zadatak

Primjeri zadataka:

def jeftiniji(naziv_artikla, ktc, ppk):
    cijena_ktc = ktc[naziv_artikla]
    cijena_ppk = ppk[naziv_artikla]
    if cijena_ktc < cijena_ppk:
        return 'ktc', cijena_ktc
    else:
        return 'ppk', cijena_ppk

def skuplji(naziv_artikla, ktc, ppk):
    cijena_ktc = ktc[naziv_artikla]
    cijena_ppk = ppk[naziv_artikla]
    if cijena_ktc > cijena_ppk:
        return 'ktc', cijena_ktc
    else:
        return 'ppk', cijena_ppk

#GLAVNI PROGRAM

jeftino_cijena_mapa = {}
jeftino_trgovina_mapa = {}

skupo_cijena_mapa = {}
skupo_trgovina_mapa = {}

print 'Dobar dan, izvolite!'
while True:
    naziv_artikla = raw_input('Unesite naziv artikla (za kraj pritisnite enter): ')
    if naziv_artikla == '':
        break
    if naziv_artikla in ktc.keys():
        kolicina = input('Koliko komada zelite kupiti? ')
        naziv_trgovine_jeftino, cijena_jeftino = jeftiniji(naziv_artikla, ktc, ppk)
        jeftino_cijena_mapa[naziv_artikla] = cijena_jeftino * kolicina
        jeftino_trgovina_mapa[naziv_artikla] = naziv_trgovine_jeftino
        naziv_trgovine_skupo, cijena_skupo = skuplji(naziv_artikla, ktc, ppk)
        skupo_cijena_mapa[naziv_artikla] = cijena_skupo * kolicina
        skupo_trgovina_mapa[naziv_artikla] = naziv_trgovine_skupo      
    else:
        print 'Nemamo ', naziv_artikla
print 'Hvala i dovidjenski!'
print 'Ukupno je potrebno potrositi najmanje', sum(jeftino_cijena_mapa.values()), 'KN'
print 'Ukupno je potrebno potrositi najvise', sum(skupo_cijena_mapa.values()), 'KN'
print 'U KTC-u moras kupiti:'
for naziv_artikla in jeftino_trgovina_mapa.keys():
    if jeftino_trgovina_mapa[naziv_artikla] == 'ktc':
        print naziv_artikla, float(jeftino_cijena_mapa[naziv_artikla]) / ktc[naziv_artikla], 'komada'
print 'U PPK-u moras kupiti:'
for naziv_artikla in jeftino_trgovina_mapa.keys():
    if jeftino_trgovina_mapa[naziv_artikla] == 'ppk':
        print naziv_artikla, float(jeftino_cijena_mapa[naziv_artikla]) / ppk[naziv_artikla], 'komada'

 
0 0 hvala 0
9 godina
neaktivan
offline
Python - zadatak

Još zadataka

#REKURZIVNBE FUNKCIJE

def jeftini_pokloni(cijena, mapa_c):
    odabrani_artikli = []
    for i in mapa_c.keys():
        if mapa_c[i] < cijena:
            odabrani_artikli.append(i)
    return odabrani_artikli

def print_podaci(lista_id, mapa_n, mapa_c):
    for i in lista_id:
        print i
        print mapa_n.get(i)
        print mapa_c[i], '\n'

def sortiranje_artikala(id):
    return mapa_cijena.get(id)

#GLAVNI_PROGRAM:

mapa_naziv = {1: 'Rucni sat', 2: 'Bicikl', 3: 'Mikser', 4: 'Kulen', 5: 'Sir' }
mapa_cijena = {1: 100, 2: 175, 3: 50, 4: 250, 5: 100}

print_podaci(mapa_naziv.keys(), mapa_naziv, mapa_cijena)

cijena = input('Koliko para? ')
lista_poklona = jeftini_pokloni(cijena, mapa_cijena)
if len(lista_poklona) == 0:
    print 'Nije ovo Hrelic!'
else:
    print 'Za zadanu cijenu mozete kupiti: '
    print_podaci(lista_poklona, mapa_naziv, mapa_cijena)

print 'Sortirani artikli:'

sortirana_lista = sorted(mapa_cijena, key=sortiranje_artikala)
print_podaci(sortirana_lista, mapa_naziv, mapa_cijena)

#FUNKCIJA
def ucitaj_studente(kolicina):
    mapa = {}
    for i in range(0, kolicina):
        ime_i_prezime = raw_input("Unesite ime i prezime %d. studenta >> " % (i + 1))
        prosjek = input("Unesite prosjek %d. studenta >> " % (i + 1))
        mapa[ime_i_prezime] = prosjek
    return mapa

def najbolji_student(mapa):
    lista_prosjeka = mapa.values()
    najveci_prosjek = max(lista_prosjeka)
    for ime_i_prezime in mapa.keys():
        if mapa[ime_i_prezime] == najveci_prosjek:
            trazeni_student = ime_i_prezime
            break
    return trazeni_student, najveci_prosjek

#GLAVNI PROGRAM
broj = input("Unesite broj studenata koji zelite unijeti")
studenti = ucitaj_studente(broj)
student, ocjene = najbolji_student(studenti)
print "Najbolji student je", student, "i ima prosjek", ocjene


#FUNKCIJA
def ispis(ime, prezime):
    print ime, prezime, ", dobrodosli na Programiranje!"

#GLAVNI PROGRAM
moje_ime = raw_input("Unesite svoje ime >> ")
moje_prezime = raw_input("Unesite svoje prezime >> ")
ispis(moje_ime, moje_prezime)

#funkcija
def ukupni_otpor(r1,r2,r3):
    r_uk = r1+r2+r3
    return r_uk
#gl program
otp1, otp2, otp3 = input("upi?ite tri iznosa serijski spojenih otpora>>")
rez = ukupni_otpor(otp1,otp2,otp3)
print "ukupni otpor strujnog kruga je", rez


#definiranje funkcije
def ispis(ime, prezime):
    print ime, prezime, ",dobrodosli na programiranje!"
#glavni program
moje_ime = raw_input("unesite svoje ime>>")
moje_prezime = raw_input("unesite svoje ime>>")
ispis(moje_ime, moje_prezime)



kolokvij za 20 bodova: 

from random import *
mapa = {}
lista = []
broj = input("Unesite broj N >>")
for i in range (0, broj):
    generirani = randrange (0,101)
    #print generirani
    if generirani in mapa.keys():
        mapa[generirani] += 1
    else:
        mapa[generirani] = 1
lista = mapa.values()
max_broj_ponavljivanja = max(lista)
min_broj_ponavljivanja = min(lista)
for kljuc in mapa.keys():
    if max_broj_ponavljivanja == mapa[kljuc]:
        print "Broj", kljuc,"pojavljuje se najcesce, i to", max_broj_ponavljivanja, 'puta'
    if min_broj_ponavljivanja == mapa[kljuc]:
        print "Broj", kljuc,"pojavljuje se najrijedje, i to", min_broj_ponavljivanja, 'puta'   
       


print mapa



-------------------beskonacna petlja:--------------

while True:
    ocjena = input('Unesi ocjenu >>')
    if ocjena >= 1 and ocjena <= 5:
        break
    else:
        print 'Error'
print 'hvala'

-------------------iscitavanje mape----------

mapa = {}
lista = []
brojac = 0
cjenik = open("artikli.txt", 'r')
rjesenje = open('najskuplji_najjeftiniji.txt', 'w')
for proizvod in cjenik:
   (roba, cijena) = proizvod.split()
   mapa[roba] = float(cijena)
lista = mapa.values()
for i in lista:
   #print 'ovo mi je i',i
   brojac +=1
   if brojac == 1:
      big = i
      small = i
   else:
      if big < i:
         big = i
         print 'najveci je',big
      if small > i:
         small = i
         print 'najmanji je',small
for h in mapa.keys():
    if big == mapa[h]:
       print 'najskuplji artikl je>>>', h
       rjesenje.write('najskuplji artikl je >>>>')
       rjesenje.write('\n')
       rjesenje.write(h)
       rjesenje.write('\n')
for d in mapa.keys():
    if small == mapa[d]:
       print 'najjeftiniji artikl je>>>',d
       rjesenje.write('najjeftiniji artikl je >>>>')
       rjesenje.write('\n')
       rjesenje.write(d)
       rjesenje.write('\n')
rjesenje.close()  
   

----------brojanje najveceg broja:----------------

brojac = 0
najveci = 0
while brojac < 10:
    broj = input ('unesi broj')
    if brojac == 0:
        najveci = broj
    else:
       if najveci < broj:
            najveci = broj
    brojac += 1
print 'najveci je broj', najveci

ili

brojac = 0
najveci = 0
while brojac < 10:
    broj = input ('unesi %s broj' % (brojac +1))
    if brojac == 0:
        najveci = broj
    elif najveci < broj:
        najveci = broj
    brojac += 1
print 'najveci je broj', najveci


brojac parnih brojeva:

prvibroj = input('Unesi prvi broj >>')
drugibroj = input('Unesi drugi broj>>')
brojacParnih = 0
count = prvibroj
while count <= drugibroj:
    if count % 2 == 0 and count != 0:
        brojacParnih += 1
        print count
    count += 1
print 'Parnih brojeva ima', brojacParnih


dva najveca broja:

prvi, drugi, treci, cetvrti, peti = input ('Unesite pet dvoznamenkastih brojeva>>')
a = [prvi, drugi, treci, cetvrti, peti]
a.sort()
print 'Dva najveca unesena broja su: %s i %s' % (a[-1], a[3])


zaokruzi na broj decimala:

prvi, drugi = input ('Unesite dva broja >>')
if drugi==0:
    print 'greska uneseni broj je 0'
else:
    broj_decimala = input('unesite broj decimala >>')
    rezultat = float(prvi) / drugi
    print 'rezultat je ', rezultat
    zaokruzeni_rezultat = round(rezultat,broj_decimala)
    print 'Zaokruzeni rezultat je', zaokruzeni_rezultat


srednja vrijednost:

import numpy
broj1, broj2, broj3 = input ('unesi tri broja>>')

print 'najmanji je', min(broj1,broj2,broj3)

if broj1>broj2:
    if broj1 > broj3:
        print 'najveci je ', broj1
    else:
        print 'najveci je ', broj3
elif broj2>broj3:
    print 'najveci je ', broj2
else:
    print 'najveci je ', broj3
print 'srednja vrijednost je:', numpy.mean ([broj1,broj2,broj3])


prijevod dana bez obzira na slova:

dan_na_hrvatskom = raw_input('Unesite naziv dana na hrvatskom: ')
if dan_na_hrvatskom.lower() == 'ponedeljak'.lower():
    print 'Monday'
elif dan_na_hrvatskom.lower() == 'Utorak'.lower():
    print 'Tuesday'
elif dan_na_hrvatskom.lower() == 'Srijeda'.lower():
    print 'Wendsday'
elif dan_na_hrvatskom.lower() == '\xe8etvrtak'.lower() or dan_na_hrvatskom.lower() == 'cetvrtak'.lower():
    print 'Thursday'
elif dan_na_hrvatskom.lower() == 'Petak'.lower():
    print 'Friday'
elif dan_na_hrvatskom.lower() == 'Subota'.lower():
    print 'Saturday'
elif dan_na_hrvatskom.lower() == 'Nedelja'.lower():
    print 'Sunday'
else:
    print 'Greska!'


moj provjera prim brojeva:

broj = input ('Unesi broj>>')
brojac = 2
while True:
    if broj <=1 or broj % brojac == 0 and broj != brojac:
        print 'Uneseni broj nije PRIM broj'
        break
    elif brojac <= broj:
        brojac += 1
    else:
        print 'uneseni broj je PRIM'
        break


Slicing:

a=raw_input ('upisi broj:')
desetica=a[-2:-1]
jedinica=a[-1:]
print 'vas broj ima %s desetica i %s jedinica' % (desetica,jedinica)


indexing:

a=raw_input ('upisi broj:')
b=a[-1]
c=a[-2]
print 'vas broj ima %s desetica i %s jedinica' % (c,b)


racunanjem:

a=input ('upisi broj:')
b=a/10
c=a-b*10
print 'vas broj ima %s desetica i %s jedinica' % (b,c)


petlja while s brojanjem izvodjenja:

sum = 0
count = 0
while sum <=100:
    count += 1
    broj = input('Unesi>>')
    if broj >= 0:
        sum += broj
    print 'trenutna suma je>>', sum
print 'Konacna suma je>>', sum
print 'Petlja se izvela >>', count

 

 
0 0 hvala 0
9 godina
neaktivan
offline
Python - zadatak

Rad sa datotekom

--------------#Datoteke----------------------
datoteka = open('moj.txt','r')
druga = open('drugi.txt','r')
def ucitavanje(tekst):
    mapa = {}
    for a in tekst:
        (brand, broj) = a.split()
        mapa[brand]=broj
    return mapa
brand = ucitavanje(datoteka)
glupost = ucitavanje(druga)
#print brand
#print glupost
zapis = open('zapis.txt','w')
for a,b in brand.items():
    zapis.write(a+' '+b+'\n')
for a,b in glupost.items():
    zapis.write(a+' '+b+'\n')
zapis.close()

 
0 0 hvala 0
9 godina
neaktivan
offline
Python - zadatak

Primjer rada sa mapama i datotekama

 

brzina = {}
potrosnja = {}
datoteka = open('ime_mape.txt', 'r')
for linija in datoteka:
   if linija.endswith('\n'):
      linija = linija[:-1]
   lista = linija.split(":")
   brzina[ lista[0] ] = lista[1]
   potrosnja[ lista[0] ] = float(lista[2])
datoteka.close()

 
0 0 hvala 0
9 godina
neaktivan
offline
Python - zadatak

primjeri za rad sa mapama

 

mapa = {}

# Unos u mapu
for i in range(1, 4):
   ucenik = raw_input("Unesite ime ucenika: ")
   visina = input("Unesite visinu ucenika u centimetrima: ")
   mapa[ucenik] = visina

# Citanje iz mape po kljucu
ucenik = raw_input("Unesite ime ucenika: ")
print "Visina " , ucenik , " je ", mapa[ucenik], " cm"

 

# Ispis cijele mape
for i in mapa:
print i, mapa[i]

 

# varijanta 2
print mapa

najvisi = max(mapa.values())
for k in mapa:
   if mapa[k] == najvisi:
     print "Najvisi ucenik je: ", k
     break

 

popis = sorted(mapa.keys(), reverse = True)
print popis

 

visine = sorted(mapa.values())
print visine

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice