Programiranje v Pythonu

Ko tudi učitelj ne more pomagati...
Odgovori
fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

funkcija ravninskaRazdalja mora sprejet 4 argumente in ne 3

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Aja jasno, to sem od tebe pretipkal.

for i in meti:

i-je (pare) pobiraš iz metov.

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Sem rešil...treba je dat for i,j in meti:
pol daš pa u oklepaj i,j

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Ne vem pa...zakaj mi ta ne dela...koda se mi zdi uredu

2) Sestavite funkcijo slike(permutacija, x, n), vrne pa seznam slik
# števila x, če uporabimo permutacijo n-krat.
#
# >>> slike([3, 4, 2, 1], 1, 3)
# [3, 2, 4]
##################################################################000035@#
def slike(permutacija,x,n):
if n==1:
return [x]
elif n==2:
return [x,permutacija[x]]
else:
preostanek=slike(permutacija,permutacija[x],n-1)
preostanek.insert(0,x)
return preostanek

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Hm... permutacija[x-1] povsod... ker indeksi gredo 0,1,2,3... 4 je preveč.

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Sem že poskusil...vseeno javi numerično napako

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

No meni dela:

Koda: Izberi vse

def slike(permutacija,x,n):
  if n==1:
    return [x]
  elif n==2:
    return [x,permutacija[x-1]]
  else:
    preostanek=slike(permutacija,permutacija[x-1],n-1)
    preostanek.insert(0,x)
    return preostanek

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Sem prekopiral vašo kodo in ne dela...hm, ne vem

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Pravimo, da je beseda skoraj palindrom, če ji je treba zbrisati natanko
eno črko, da bi postala palindrom. Primer je beseda 'kolo', ki ji
moramo zbrisati črko 'k', pa postane palindrom 'olo'.

Sestavite funkcijo skorajPalindrom(niz), ki preveri, ali je niz
skoraj palindrom. Vse znake (tudi presledke) v besedi obravnavamo enako.
##################################################################000030@#
def skorajPalindrom(niz):
for i in niz:
if niz.replace(i, "") == palindrom:
return True
else:
return False


Nisem se mogel drugega spomnit...koda za preverjanje palindroma je uredu

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Kaj pa reče? Treba se je naučit razumet napake, ki jih meče. Kako pa pokličeš to?

Palindromi: kaj pa hočeš narest s kodo
if niz.replace(i, "") == palindrom:
To primerjaš niz z neko spremenljivko po imenu palindrom, karkoli že to pomeni (v tem primeru ni definirana).
Poleg tega boš imel naslednje težave: tale replace bo zamenjal vse iste črke s presledkom. Ti moraš zbrisat črko in potem preverjat, če je enak svoji zrcalni sliki.

Koda: Izberi vse

def skorajPalindrom(niz):
#Torej, najprej greš po vseh možnostih katerega izbrisat:
  for i in range(len(niz)):
    #izbrišeš i-ti znak, tukaj lahko izkoristiš komando "del", ampak najprej moraš tekst spremenit v seznam znakov:
    zacasni=list(niz)
    del zacasni[i]
    #zdaj je znak pobrisan (lahko bi naredil tudi zacasni=zacasni[:i]+zacasni[i+1:] samo bi mislim da moral pazat na skrajni desni element)
    #zdaj samo primerjas, ce je enak svoji zrcalni sliki.
    #Ce je, potem je skoraj palindrom.
    #Ce ni, potem še ne obupat, saj je lahko za kateri drug izbrisan znak pa vseeno palindrom
    #na zalost metoda .reverse() na mestu obrne (torej moramo naredit kopijo in jo obrnit):
    obrnjeno=zacasni
    obrnjeno.reverse()
    if zacasni == obrnjeno:
      return True
  #izven For zanke pa False
  return False
Seveda se kot vedno v pythonu da to poenostavit, samo potem je mogoče začetnikom manj berljivo. Lahko bi direktno primerjal
if zacasni == zacasni[::-1]:

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

Hvala :)

fmf
Prispevkov: 210
Pridružen: 28.6.2012 16:02

Re: Programiranje v Pythonu

Odgovor Napisal/-a fmf »

2) Sestavite funkcijo slike(permutacija, x, n), vrne pa seznam slik
# števila x, če uporabimo permutacijo n-krat.
#
# >>> slike([3, 4, 2, 1], 1, 3)
# [3, 2, 4]
##################################################################000035@#

def slike(permutacija, x, n):
r=[]
for i in range(n):
y = permutacija[x-1]
r.append(y)
return r

Ker mi vaša rešitev ni delala, sem šel po drugačni poti...kaj pa je tukaj narobe?

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Stalno vstavljas x... v naslednjem koraku bi moral vstavit dobljeni y. Predlagam, da pred zanko definiras ze zacasen y=x, in potem delas y=permutacija[y-1].

Kaj ti pa pri moji verziji ne dela? Da error ali da napacen rezultat? Katero verzijo Pythona imas? 2 ali 3?

anjaD
Prispevkov: 81
Pridružen: 23.8.2010 13:04

Re: Programiranje v Pythonu

Odgovor Napisal/-a anjaD »

Pozdrav,

pri reševanju domače naloge sem naletela na težavico, ki je nikakor ne morem razrešiti. In sicer v programskem jeziku Python moramo sestaviti funkcijo, ki prebere podatke z dane datoteke (za parameter dobi ime datoteke) ter vrne seznam vseh števil na datoteki. Podatke na datoteki, ki niso cela števila, naj funkcija ignorira. In tukaj imam problem z zadnjim stavkom. Spodaj je napisana moja koda, ki pa dela samo v primeru, če so na datoteki zapisana samo cela števila.

Koda: Izberi vse

def preberiDat(dat='dn1.txt'):
    with open(dat) as f:
        vrstice = f.read()
        vrstice=vrstice.split()
        seznam = []
        for i in vrstice:
            seznam.append(int(i))      
    return seznam

Uporabniški avatar
Aniviller
Prispevkov: 7263
Pridružen: 15.11.2004 18:16

Re: Programiranje v Pythonu

Odgovor Napisal/-a Aniviller »

Hm... poskusi testirat enakost celoštevilske in realne oblike:

Koda: Izberi vse

if int(i) == float(i):
  seznam.append(int(i))

Odgovori