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ć?
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ć?
Postaj kod koji si napisao, teško je vidjeti u čemu je problem bez toga.
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)
More pythonic verzija istog koda:
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)
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'
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
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()
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()
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