Python

Sekcia o programovaní, programovacích jazykoch...
sliziky
Nový používateľ
Nový používateľ
Príspevky: 3
Dátum registrácie: Ne 09. Nov, 2014, 11:24

Python

Príspevok od používateľa sliziky »

Zdravím potreboval by som radu s Pythonom,prešiel som z C++ na Python(chcem si ho vyskúšať) a učím sa ho tak 3 dni a mal som úlohu :na vstupe dostanem "x" ...a v ďalšom riadku "x" čísel...no a potom s tymíto číslami chcem pracovať...moje otázky 2 znejú že 1) Do čoho by bolo najvhodnejšie uložiť tie čísla?(A ako ich tam dostať)Niečo ako v C++ sú polia...a 2) Ako potom s tými číslami pracovať...napr v C++..if pole[4]==4 ....atď..proste potrebujem tie pozície..źe ak sa na i-pozícii nachádza toto tak potom toto...ďakujem :)
matúš
Nový používateľ
Nový používateľ
Príspevky: 87
Dátum registrácie: So 20. Sep, 2014, 11:28

Re: Python

Príspevok od používateľa matúš »

Spontánne mi napadajú tri spôsoby ukladania v pythone podobné poliam. To sú tzv. set, tuple a list

Tieto vytvoríš:

Kód: Vybrať všetko

a=[1,5,'som string', [[2],'3']]#list
b=(1,5,'som string',[(2,),'3'])# tuple
c=set(b)# set
V praxi používaš v 99% prípadoch listiny, keďže sú najflexibilnejšie. Funkcie append, extend, pop ti umožnia meniť dĺžku listín. Takisto si pozri ako infixy + a * fungujú s listinami.

Všetky tri druhy adresuješ podobne ako v c++

Kód: Vybrať všetko

>>> a[0]
1
>>> a[3][0]
[2]
>>> a[2][1]
't'
>>> a[1]=[3,4]
V poslednom kroku som prepísal 5. Ako vidieť listiny môžeš dynamicky zväčšovať. Pri práci s veľkými listinámi to môže spôsobiť značný overhead a v tomto prípade by som použil ndarray z numpy balíku. Tieto fungujú podobne ak matlabovské matice.

Viac sa dozvieš tu.
Gaming: i5-4570, Asus GTX 970 mini, AsRock H87m-ITX, Samsung 850 Pro 256 Gb SSD, Projektor Optoma GT1080
Notebook: Clevo P156SM-A, i7-4810MQ, GTX 880m
sliziky
Nový používateľ
Nový používateľ
Príspevky: 3
Dátum registrácie: Ne 09. Nov, 2014, 11:24

Re: Python

Príspevok od používateľa sliziky »

Tak spravil som niečo takéto

Kód: Vybrať všetko

pole=[]
cislo=int(input(""))
for i in range (1,cislo+1):
    number=int(input("cislo"))
    pole.append(number)
    
print (pole)
problém je v tom že na inpute ich musím hádzať tie čísla pod seba a nie do jedného riadku ...namiesto 3 4 5[Enter]..musím 3[Enter]4[Enter]....atď...ale funguje to..ale nie v jednom riadku,takže ako to dám prosím ťa do 1 riadku? :) :P :)
sliziky
Nový používateľ
Nový používateľ
Príspevky: 3
Dátum registrácie: Ne 09. Nov, 2014, 11:24

Re: Python

Príspevok od používateľa sliziky »

Problém som vyriešil nasledovne :

Kód: Vybrať všetko

kladne=0
zapor=0
cislo=int (input(""))
seria=input("")
bar=seria.split()
for i in range(0,cislo):
       num=int(bar[i])
       if num>0 :
              kladne+=1
       elif num<0 :
              zapor+=1
if kladne>zapor:
       print ("pravica")
elif zapor>kladne:
       print ("lavica")
else:
       print("lavopravostred")
matúš
Nový používateľ
Nový používateľ
Príspevky: 87
Dátum registrácie: So 20. Sep, 2014, 11:28

Re: Python

Príspevok od používateľa matúš »

Nie je mi celkom jasné čo je cielom toho druhého programu ale ak chceš cez input zadefinovať listinu tak:

Kód: Vybrať všetko

>>> a=input()
1,2,5
>>> print type(a), a
<type 'tuple'> (3, 4, 5)
>>> a=list(a)
>>> print type(a), a
<type 'list'> [3, 4, 5]
Gaming: i5-4570, Asus GTX 970 mini, AsRock H87m-ITX, Samsung 850 Pro 256 Gb SSD, Projektor Optoma GT1080
Notebook: Clevo P156SM-A, i7-4810MQ, GTX 880m

Návrat na "Programovanie"