» »

Python - pomoč

Python - pomoč

1
2
3

FrEaKmAn ::

boš pa morala pokazati risar, da vidimo kaj dela...

BigWhale ::

zaj_tam je izjavil:

BigWhale je izjavil:


for x in range(1, 10):
neki = random.randint(1, 39)
if not neki in seznam:
seznam.append(neki)
else:
x -=1

V pythonu in v tem primeru morda ne ampak nekega dne, te bo taksna koda ubila. Raje se jo odvadi pisati sedaj, ko se se ucis, ker drugace te bo v prihodnosi kak sef pretepel. :)

Lahko malo razlozis zakaj? Sicer mi ni jasno kaj tocno ta koda dela ampak me zanima problematika. Se ucim :)


Znotraj zanke spreminjas spremenljivko, ki jo uporabljas kot stevec za samo zanko. V tem primeru se ne zgodi nic drasticnega, morda celo dosezes namen, ki si ga zelel. Predstavljaj si taksno (pseudo) kodo:

for x in some_list:
  do_something()
  some_list.delete(element)
  x -= 2


Potem pa v tisti for zanki spet hoces iterirati preko elementa, ki si ga na listi pobrisal. Stvari se ne bodo lepo odvile. Ampak saj pravim, morda ne v pythonu in morda ne v taksnem primeru, ampak enkrat bos zaradi tega porabil precej casa za debugiranje. :)

Taksne zadeve morajo biti zelo dobro dokumentirane. :)

Zgodovina sprememb…

  • spremenil: BigWhale ()

golobich ::

Anja, tvoja rešitev:

from time import time
import risar
from random import random, randint
from math import cos, sin, pi

fi = random() * 2 * pi
dx = cos(fi) * 5
dy = sin(fi) * 5
x, y = randint(0, risar.maxX), randint(0, risar.maxY)
krog = risar.krog(x, y, 10, risar.barva(randint(0, 255), randint(0, 255), randint(0, 255)))
c = krog.pen().color()
krog.setBrush(c)

start = time()
while start - time() <= 20:
    krog.setPos(x, y)
    if krog.x() >= risar.maxX or krog.x() <= 0:
        dx *= -1
    if krog.y() >= risar.maxY or krog.y() <= 0:
        dy *= -1
    x += dx
    y += dy
    risar.cakaj(0.02)

zaj_tam ::

BigWhale je izjavil:


Znotraj zanke spreminjas spremenljivko, ki jo uporabljas kot stevec za samo zanko. V tem primeru se ne zgodi nic drasticnega, morda celo dosezes namen, ki si ga zelel. Predstavljaj si taksno (pseudo) kodo:


for x in some_list:
do_something()
some_list.delete(element)
x -= 2


Potem pa v tisti for zanki spet hoces iterirati preko elementa, ki si ga na listi pobrisal. Stvari se ne bodo lepo odvile. Ampak saj pravim, morda ne v pythonu in morda ne v taksnem primeru, ampak enkrat bos zaradi tega porabil precej casa za debugiranje. :)

Taksne zadeve morajo biti zelo dobro dokumentirane. :)



Kapiram. Thx za pojasnilo :)

majmun ::

Mene zanima kako u pythonu izpišeš abecedo. Moreš sam napisat cel niz ali se jo da od kod "uvozit"?

broken/link ::

pozabavaj se s tema dvema funkcijama:
>>> ord()
>>> chr()
http://docs.python.org/library/function...

potem pa uporabiš chr() + še eno while/for zanko in print, in tadam ~

majmun ::

Aha, hvala. :D

BigWhale ::

majmun je izjavil:

Mene zanima kako u pythonu izpišeš abecedo. Moreš sam napisat cel niz ali se jo da od kod "uvozit"?


Easy!

def abeceda(tip = "slo"):
  if tip == "ang":
    for chr in ("a","b","c","d","e","f","g",
                "h","i","j","k","l","m","n",
                "o","p","q","r","s","t","u",
                "v","w","x","y","z"):
      print chr
  elif tip == "slo":
    for chr in ("a","b","c","č","d","e","f","g",
                "h","i","j","k","l","m","n",
                "o","p","r","s","š","t","u",
                "v","z","ž"):
      print chr
  else:
    print "Neznan jezik."


Evo tle je preprosta funkcija, ki ti izpise abecedo. Dodan je se parameter, da lahko izpise anglesko ali slovensko abecedo. Z malo truda bos dodal se druge jezike!

jeti51 ::

Če potrebuješ samo angleško abecedo:

import string
letters = string.ascii_lowercase


Potem pa z "letters" delaš, kar pač želiš.

Zgodovina sprememb…

  • spremenil: jeti51 ()

BigWhale ::

jeti51 je izjavil:

Če potrebuješ samo angleško abecedo:


import string
letters = string.ascii_lowercase


Potem pa z "letters" delaš, kar pač želiš.


Moja resitev je bla boljsa, ker ma se slovenstino! ;>

Adam7 ::

Ahoj. lepo prosim za pomoč v Pythonu pri naslednjem problemu ..

Kako bi mi program našel najdaljšo verigo besed (zadnja črka besede se ujema prvi črki naslednje besede)?
npr. morje slika jesen ekran ključ kamen čmrlj

izpisati mora najdaljšo verigo: ključ čmrlj jesen

zaenkrat mi najde le, če sta besedi zaporedni, vendar ne vem kako najti, če so pomešane.


lepa hvala.

Gandalfar ::

Pokazi kodo?

Adam7 ::

novi=[]
j=0
k=0
while k < (len(vsebina)-1):
if vsebina[j][-1] == vsebina[j+1][0]: novi.append(vsebina[j])
novi.append(vsebina[j+1])
j+=1
k+=1

tukaj najde le zaporedne besede, dodat je treba da v nov seznam ne dodaja istih..to vem kako, ni mi pa jasn kako najde verigo iz pomešanih besed... :S

phyro ::

mogoče na kak tak način da si shraniš v neko strukturo vse besede, ki se začnejo na neko določeno črko in v drugo strukturo kjer se končajo (recimo slovar -> zac["a"] = ["aleluja","avto"] itd.).
pol greš pa rekurzivno se sprehajat in gledaš nekako v tem stilu:
nova max_veriga je 1+max od teh ki so ostali. (podat moraš črko s katero si končal in seveda rabiš tudi path zraven beležit, da se ne ciklaš)

lahko si pa problem predstaviš kot graf (v primeru da je konc ene besede enak začetku drugemu, pol sta tidve vozlišči povezani). Pol kar iščeš je najdaljša pot na grafu.

to je use ful abstraktno in nisem dejansko implementiral rešitve da bi preveril

Adam7 ::

rekurzija mi je kar zahtevna za razumet in naredit .. bom poskusil kaj v tej smeri kot si predlagal .. čeprav dvomim, da bo uspelo :/

Mesar ::

Glede na odziv, ki ga je pokazala je vsak trud odveč. Že vidim, da bodo bodoče programerke pravi biseri.
Your turn to burn!

anicainpika ::

Pozdravljeni!

Zanima me ali mi lahko kdo pomaga pri unittestih :)
Napiši program, ki prebere ocene za 10 predmetov in izpiše, ali je uspeh negativen ali pozitiven; če je uspeh pozitiven, naj izpiše tudi povprečno oceno. Za vsak predmet je podana ena ocena, ki je celo število med 1 in 5. Uspeh je negativen, če je vsaj en predmet ocenjen z 1, sicer pa pozitiven.
To je naloga, ki jo moramo narediti z razredi in testirati še z unittesti. In sem jo naredila, samo da je ne znam testirati. :(

golobich ::

če uporabljaš PyCharm potem samo zaženeš skupaj z unittest in če ti projde normalno čez vse testne primere bo en tak zeleni krogec se ti prikazal :)

Lp, golobich

Adam7 ::

Oi..

kako bi lahko primerjal dva seznama med sabo, če je 1. seznam: [a,b,c] in 2. seznam: ["a","b","c"] ... namreč ugotoviti mora, da so elementi enaki...

hvala, lp

Meizu ::

Uporabiš recimo strip metodo v for zanki, ko ti gre le-ta skozi elemente.

Tukaj imaš zelo lep primer:

http://www.tutorialspoint.com/python/st...

Zgodovina sprememb…

  • spremenil: Meizu ()

Adam7 ::

a ko bo pobrisal bele znake na začetku in koncu, pomeni da elementi ne bodo več niz amapak navadno besedilo kot prvi seznam?

Meizu ::

Normalno ti bo prebralo ven char. S .strip() metodo pobriši navednice. Potem lahko v pythonu iz zanimivosti uporabiš zip metodo, ki ti je podrobneje opisana tule http://www.saltycrane.com/blog/2008/04/... in potem z if pogoji primerjaš črke. Takoj ko char1 ni enak char2 breakaš in izpišeš (print) napako.

Sedaj sem ti praktično povedal celotno rešitev, ampak ti vseeno nisem spisal kode, tako da malo se pa le potrudi.

Adam7 ::

Hvala za vso pomoč, pri temle se mi je ustavilo, drugače je program dosti daljši .. ampak ugotavljam, da navednic ne moreš izbrisati .. kajti niz.strip(""") ne moreš dati :S ali pa vsaj jaz spet ne razumem.. ostalo dalje mi je jasno, saj se program tako ali tako nadaljuje.

morbo ::

.strip() pobriše whitespace, ne navednic (torej " ".strip() vrača prazen niz, "".strip() prav tako). Tiste navednice niso del stringa, ampak njegova definicija.

Sicer pa ne prav razumem tvojega vprašanja, Adam7. Drugi sezam sestavljajo nizi, kaj so pa spremenljivke a, b in c v prvem?

Adam7 ::

Tako je, navednice kažejo, da so elementi 2.seznama ["a","b","c"] nizi.

Mogoče ne nisem pravilno izrazil.. vglavnem, v 1.seznamu so pa elementi navadni.. in zdaj imam problem kako dva takšna seznama med sabo primerjati.. :/ in pri celem programu me le to muči.

Spura ::

lol navadni. Hoces reci simboli.
Prvi zadetek na googlu:
http://stackoverflow.com/questions/9328...

morbo ::

Na prvem seznamu imaš spremenljivke, kaj te spremenljivke vsebujejo veš le ti. Lahko vsebujejo nize, lahko pa števila ali poljubne objekte. Primerjaš pa enostavno z dvojnim enačajem. Če spremenljivka a na prvem seznamu vsebuje niz "a", potem ti bo primerjava s1[0] == s2[0] vrnila True

Adam7 ::

očitno sem enostavno zadevo zakompliciral, tako da sem sedaj naredil na drug princip in je vredu. itak se bo pa sigurno še našla kakšna težava do konca izdelave programa. :)

Adam7 ::

Spet se je pojavil problem... kako lahko uredim nize v seznamu po številih?
npr. če imam:

seznam = ["a-2", "b-3", "c-1"]

da mi bo naredilo: seznam = ["c-1", "a-2", "b-3"]

vem, da je metoda sort, vendar uredi po abecedi..

dasf ::

seznam.sort(key=lambda x: x[2])

sort funkciji podaš parameter key - funkcijo, ki vrne del niza oz. karkoli po čemer želiš sortirati.

Malo bolj berljiva verzija:
def get_stevilo(x):
	return x[2]
seznam.sort(key=get_stevilo)

Adam7 ::

Tega še pa ne poznam, vendar kaj če pa število v nizu ni vedno na istem mestu?

dasf ::

Če je vedno na zadnjem mestu lahko uporabiš [-1] indeks - vrnje zadnji element.
Če ne, je rešitev bolj zakomplicirana. Iz vsakega niza nekako izločiš število in cel seznam zapišeš tako: [[abc1,1],[a3b,3],[z2op,2]]
Potem lahko celoten seznam sortiraš po 2. elementu v podseznamih.

Gandalfar ::

Tole:

def get_stevilo(x):
    return x[2]
seznam.sort(key=get_stevilo)

gres v:

def get_stevilo(x):
# pseudo koda
stevilo = ''
za vsak znak v x:
ali je znak stevilo?
ce je stevilo += znak
ce ne: nadaljuj

return stevilo

listje123 ::

Sem začetnik v Pythonu in imam probleme z zagonom malega programčka

raw_input("Vpiši svoje ime: ")
print "Pozdravljen " + x
raw_input("")

Nato ga shranim in hočem odpreti a se mi command prompt odpre in zapre v pičlih 0.5 sekunde.
Kaj sem naredil narobe da se program takoj prekine?

brodul ::

kaj je x?

to kar vrne funkcija raw_input moras nekam shranit.
Pretending to be a mature adult is so exhausting.

listje123 ::

Aja
x = raw_input("Vpiši svoje ime: ")
print "Pozdravljen " + x
raw_input("")

Saj sem shranil pa se mi takoj zapre
Prenesel pa sem si verzijo 3.3.0 za katero piše: does not include source

Zgodovina sprememb…

dasf ::

raw_input v 3.x verzijah Pythona ne obstaja več. Poskusi z input(), oz. prenesi verzijo 2.7 (če slediš tutorialu prirejenem za to verzijo ali kaj podobnega).

Adam7 ::

Hello,

prosil bi vas, če kdo ve, s kje lahko naložim PyQt4 za windowse, da bo deloval za Python 3.2.2.? Namreč poskušal sem že pa ne naloži pravilno.

Hvala.

b4d ::

somebody: uporabi sleep(), ker tebi se izvede program pravilno in se terminal sam od sebe takoj zapre...
b4d.sablun.org

Adam7 ::

Živjo,

prosil bi za pomoč pri naslednji zadevi, saj ne pridem problemu do dna...

npr.
1.) odprem že obstoječo datoteko za branje
2.) izpišem njeno vsebino oz. pač za karkoli že potrebujem podatke, vglavnem prvotne datoteke ne spreminjam
3.) datoteko zaprem
4.) datoteko odprem za dodajanje/pisanje
5.) na datoteko nekaj zapišem, vendar javi napako: TypeError: invalid file: _io.TextIOWrapper name=......

torej problem je v tem, da hočem zapisovati na že odprto datoteko, ali kako to python razume?
če pa datoteke ne odprem za dodajanje/pisanje (4), pa pravi da datoteka ni odprta.

Hvala

morbo ::

Najboljše bo da prilepiš kodo

b4d ::

Poglej ce ti kaj tu pomaga, sicer pa prilepi kodo kot je morbo predlagal.

http://stackoverflow.com/questions/1309...
b4d.sablun.org

Adam7 ::

hvala, sedaj deluje.

one too many ::

Se mi ne da brskat...
Kako v Pythonu, natančneje Numpyu posegaš po poljubni osi v več dimenzionalnih arrayih?
Kar hočem je elemente arraya po drugi osi: a_{0,j,2,3}, oziroma:
[array[0][i][2][3] for i in range(9)]

zapisati tako:
array[0][:][2][3]

Vendar ne deluje. Zgornja kod vrne, menda, a_{0,2,3,l} oziroma array[0][2][3][:], torej po zadnji osi. Npr. array[0,:,2,3] pa sploh ne dela.

Pozna kdo link z dobro razlago indeksov?

Yacked2 ::

Nevem kako je v pythonu, vendar bi v resnih programskih jezikih naredil takole:

for(int i = 0; i < array[0].lenght; i++)
{
    int element = array[0][i][2][3];
}
Korak naprej ni vedno ustrezen...sploh če si na robu prepada!

one too many ::

V bistvu je tvoj predlog že to:
[array[0][i][2][3] for i in range(9)]

vendar zapisano v eni vrstici.
Hotel sem najti bolj interaktiven zapis. Ampak...

Bedarija!!!! Seveda ne dela, ker array sestavljam iz različno dolgih podatkov. Pa še rekel sem si, da bi jih bilo bolje obložiti z ničlami.

lmorgh ::

torej... iz fajla sem uspešno prebral 32000 vrstic - zdaj imam stolpec z 32000 elementi (float števila). zdaj bi rad to prekopiral v nek drug file, vendar tako, da bi iz taga stolpca dobil n vrstic, v katerih bi bilo le 10 elementov (po vrsti, ne random.)

kako to narediti?
hvala

lebdim ::

Napiši kodo, ki si jo ustvaril do sedaj in drugi (ali tudi jaz) ti lahko pomagamo.

lmorgh ::

sem zadevo narobe štekal... zdej sem ugotovil, da mora biti malo drugače:

skratka... skripta odpre vse fajle v datoteki in iz njih izlušči vp, vs, ... kako jo zdaj prepričam, da mi printa te podatke v takšni obliki (1 = prvi file, 2 = drugi file, ...):

1 2 3
1 2 3
1 2 3

ne pa v obliki, ki jo dobim sedaj:
1
1
1
2
2
2
3
3
3

hvala!


še skripta:

import csv
import glob

path = "C:\\Users\\blazlocal\\Desktop\\model\\*.dat"
for fname in glob.glob(path):
    #print(fname)
    
    with open('45.0_12.0.dat', 'rb') as csvfile:
        data = csv.reader(csvfile)
        data.next()
        data.next()
    
        for row in data:
            data = row[0]
            thick = data[2:8]
            vp = data[10:16]
            vs = data[18:24]
            vp_vs_a = float(vp)/float(vs)
            vp_vs = format(vp_vs_a, '.2f')
                      
            print vp
            
        
        csvfile.close()

Zgodovina sprememb…

  • spremenilo: lmorgh ()

Tamara90 ::

Živjo, jaz bi pa prosila za pomoč pri nalogi,če bi kdo znau rešit al pa me usmerit do rešitve :)
hvala :)

V plesno društvo standardnih plesov Glinščica je včlanjenih več plesalk in plesalcev z različnimi nivoji znanja. Za vsakega plesalca in plesalko v društvu hranimo med drugim podatke o imenu in o nivoju znanja; enolično pa jo oz. ga identificiramo z njeno oz. njegovo številko članske izkaznice. Plesalci plešejo v parih, pri čemer razlika med nivojem znanja obeh plesalcev v paru ne sme biti prevelika.
V Pythonu napišite modul plesalci, ki bo vseboval naslednje funkcije:
o par
o vsi_pari
o brez_para
Podatke o posameznem plesalcu bomo podajali kot terko. V terki bodo podatki o plesalcu podani v naslednjem vrstnem redu: identifikacijska številka, ime, nivo znanja, spol. Na primer:
(11, 'Anja', 4, 'ž')

Funkcija par kot argument prejme dve terki (po eno za posameznega plesalca) in največjo dovoljeno razliko v nivoju znanja plesalcev. Funkcija ugotovi, ali lahko plesalca tvorita par. Plesalca lahko tvorita par, če sta nasprotnega spola in če se njun nivo znanja razlikuje za največ podano stopnjo. Če plesalca lahko tvorita par, vrnemo njuni identifikacijski številki kot par (2-terka). Ker je npr. par (3, 11) isti kot (11, 3), vrnite par v vrstnem redu, kjer je prva številka para vedno manjša od druge.

Funkcija vsi_pari kot argument prejeme množico plesalcev in največjo dovoljeno razliko v nivoju znanja plesalcev. V množici je vsak plesalec opisan z zgoraj definirano terko. Funkcija pa vrne množico vseh možnih parov glede na podano množico plesalcev.

Funkcija brez_para kot argument prejeme množico plesalcev in največjo dovoljeno razliko v nivoju znanja plesalcev. V množici je vsak plesalec opisan z zgoraj definirano terko. Funkcija pa vrne množico identifikacijskih številk vseh tistih plesalcev, ki ne morejo tvoriti para pri podanih pogojih.
1
2
3


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

python-rabim pomoč

Oddelek: Programiranje
162643 (873) rnla1973
»

Naloga iz Putka - UPM

Oddelek: Programiranje
242042 (1378) NejcSSD
»

urejanje - python

Oddelek: Programiranje
51272 (1049) ktka
»

Število decimalk???

Oddelek: Programiranje
71492 (996) donkihod
»

Blackjack

Oddelek: Programiranje
61409 (1036) urosz

Več podobnih tem