Obsah fóra
PravidláRegistrovaťPrihlásenie




Odpovedať na tému [ Príspevkov: 9 ] 
AutorSpráva
Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok NapísalOffline : 05.10.2013 23:39

Zdravim, potreboval by som nacitat retazec, z neho povyberat cisla a ulozit to do pola.

K mojmu rieseniu: Cisla som hladal pomocou ASCII znakov. Ak vstup bude koncit cislom, program spadne, inak zbehne dobre. Chyba bude v druhom while cykle. Vedel by niekto poradit?

Kód:
    def nacitaj(pole):
        mnozina_ascii = {48,49,50,51,52,53,54,55,56,57}
        nove_pole = []
        cislo = ''
        i = 0
        while (i < len (pole)):
            if (ord(pole[i]) in mnozina_ascii):
                while (ord(pole[i]) in mnozina_ascii):
                    cislo = cislo + pole[i]
                    i = i + 1
                nove_pole.append(int(cislo))
                cislo = ''
            i = i + 1
        return nove_pole


Ak vstup konci cislom, vypise tuto chybu:
Citácia:
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
nacitaj ('sa54')
File "C:/Users/ferdo/Desktop/Python/p1.py", line 8, in nacitaj
while ((ord(pole[i]) in mnozina_ascii)):
IndexError: string index out of range


Myslim, ze sa pokusa testovat neexistujuci prvok pola, ale akakolvek podmienka bud nefunguje, alebo hlasi inu chybu.







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149
Bydlisko: Houston, Texas
Príspevok NapísalOffline : 06.10.2013 14:16

namiesto toho prvého i = i + 1 daj break

Kód:
def nacitaj(pole):
    mnozina_ascii = {48,49,50,51,52,53,54,55,56,57}
    nove_pole = []
    cislo = ''
    i = 0
    while (i < len (pole)):
        if (ord(pole[i]) in mnozina_ascii):
            while (ord(pole[i]) in mnozina_ascii):
                cislo = cislo + pole[i]
                break
            nove_pole.append(int(cislo))
            cislo = ''
        i = i + 1
    return nove_pole



ps. načo vlastne tak komplikovano? python síce neviem, ale tak napadá ma o dosť kratšie riešenie :D
Kód:
def nacitaj(pole):
    nove_pole = []
    i = 0
    while (i < len (pole)):
        if (pole[i] >= '0' and pole[i] <= '9'):
            nove_pole.append(int(pole[i]))
        i = i + 1
    return nove_pole


Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 06.10.2013 15:09

Dakujem za odpoved, ale ani jedno riesenie nerobi to, co by som potreboval. Ak by mal zo vstupu citat jednociferne cisla, bolo by to OK, ale co ak je tam cislo napr. 276? Preto tam mam ten druhy while cyklus.







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149
Bydlisko: Houston, Texas
Príspevok NapísalOffline : 06.10.2013 15:29

aha, ja som myslel že ti stačia tie čislice vypísať

no tak skús regulárne výrazy
Kód:
http://stackoverflow.com/questions/4289331/python-extract-numbers-from-a-string


alebo ak chceš ten svoj kód tak za
Kód:
cislo = cislo + pole[i]
i = i + 1
pridaj podmienku že či už niesi na konci

Kód:
if (i == len(pole)):
    break


Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 06.10.2013 16:27

Uz to pekne funguje s tym break prikazom, dakujem za pomoc :)







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 30.10.2013 7:35

Zdram, nechcem spamovat, preto som vlozil tento problem do svojej starsej temy. Potrebujem zistit, ci sa meno suboru nachadza v databaze, databaza je vseobecny strom (ale to asi nieje podstatne), ide o to, ze to prehladavam rekurziou, a aj ked to najde, pokracuje v hladani dalej, cize vrati FALSE, existuje nejeky prikaz, na okamzite ukoncenie metody/funkcie? Pripadne, ako prerobit tento kod, aby okamzite vratilo true?
Kód:
    def __in__(self, file_name):
        input = False;
        if (self.meno != file_name):
            for file in self.child:
                file.__in__(file_name);
        else:
            return  True;
        return input;







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 20.03.08
Prihlásený: 08.03.17
Príspevky: 596
Témy: 149
Bydlisko: Houston, Texas
Príspevok NapísalOffline : 30.10.2013 7:51

Kód:
    def __in__(self, file_name):
        input = False;
        if (self.meno != file_name):
            for file in self.child:
                if file.__in__(file_name):
                    return True;
        else:
            return  True;
        return input;


treba zistovať čo to vrátilo aj pri tej rekurzii ;)


Offline

Skúsený užívateľ
Skúsený užívateľ
Obrázok užívateľa

Registrovaný: 13.11.07
Prihlásený: 20.08.16
Príspevky: 1702
Témy: 0
Príspevok NapísalOffline : 30.10.2013 10:28

Tá premenná input tam nie je zbytočná? (pretože nevidím, že by sa tam používala)
Kód:
 def __in__(self, file_name):
        if self.meno == file_name:
            return True

        for file in self.child:
            if file.__in__(file_name):
                return True;

        return  False


Offline

Užívateľ
Užívateľ
[Python] Nacitanie retazca

Registrovaný: 23.12.10
Prihlásený: 10.09.22
Príspevky: 1056
Témy: 157
Bydlisko: KK/PP/BA
Príspevok Napísal autor témyOffline : 31.10.2013 0:47

Vdaka chalani :)







_________________
HP ProBook 4530s Intel® Core™ i5-2430M (2.4GHz, 3MB, 2 jadrá)*4GB 1333MHz DDR3*ATI Mobility Radeon HD 6490 1GB + Intel HD Graphics 3000*640GB SATA 5400RPM *Windows 7 Home Premium 64 bitová verzia
Lenovo IdeaPad Z50-70 Intel Core i5 4210 Haswell* NVIDIA GeForce GT 840M 4GB + Intel HD Graphics 4000*SSHD 1TB 5400 otáčok + 8GB cache*RAM 4GB* Full HD (1920 × 1080)*Windows 10 pro

Boh je reálny, pokial nebol deklarovaný ako integer
Odpovedať na tému [ Príspevkov: 9 ] 


Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy. Assembler,nacitanie retazca

v Assembler, C, C++, Pascal, Java

0

394

16.04.2013 19:01

crawn Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. funkcia na doplnenie retazca do retazca

v PHP, ASP

3

413

06.07.2009 19:21

stenley Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. 8080 spracovanie retazca

v Assembler, C, C++, Pascal, Java

1

648

07.01.2009 14:52

stopa27 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. znak do retazca

v Assembler, C, C++, Pascal, Java

3

361

15.11.2011 11:03

marian_r Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Výťah časti reťazca

v PHP, ASP

6

441

10.05.2009 19:52

Denco1 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kontrola retazca vo formulari

v JavaScript, VBScript, Ajax

8

907

05.09.2007 14:23

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. nahradenie reťazca inym reťazcom

v PHP, ASP

3

541

02.12.2009 23:48

Supicek Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Regulárne výrazy - negácia reťazca

v PHP, ASP

7

910

22.10.2007 20:39

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. C - zistovanie pismena z retazca

v Assembler, C, C++, Pascal, Java

7

565

05.12.2011 22:45

namorblade3 Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. kontrola zadaneho retazca vo formulari

v PHP, ASP

5

566

29.08.2007 19:15

juho Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. vybratie urcitej casti retazca od zvoleneho znaku

v PHP, ASP

1

459

20.07.2009 15:21

Ďuri Zobrazenie posledných príspevkov

Táto téma je zamknutá, nemôžete posielať nové príspevky alebo odpovedať na staršie. python

v Perl, Python, Ruby, CGI

1

736

19.12.2011 23:09

Ďuri Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Python

v Perl, Python, Ruby, CGI

12

883

02.07.2021 8:41

void Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Help python

v Perl, Python, Ruby, CGI

6

1796

20.04.2009 8:18

bji Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. Python-funkcia

v Perl, Python, Ruby, CGI

12

693

12.11.2014 0:21

Misosvk Zobrazenie posledných príspevkov

V tomto fóre nie sú ďalšie neprečítané témy. python LinearDiscriminantAnalysis

v Perl, Python, Ruby, CGI

0

456

22.08.2016 13:23

marian_r Zobrazenie posledných príspevkov


Nemôžete zakladať nové témy v tomto fóre
Nemôžete odpovedať na témy v tomto fóre
Nemôžete upravovať svoje príspevky v tomto fóre
Nemôžete mazať svoje príspevky v tomto fóre

Skočiť na:  

Powered by phpBB Jarvis © 2005 - 2024 PCforum, webhosting by WebSupport, secured by GeoTrust, edited by JanoF
Ako väčšina webových stránok aj my používame cookies. Zotrvaním na webovej stránke súhlasíte, že ich môžeme používať.
Všeobecné podmienky, spracovanie osobných údajov a pravidlá fóra