[ 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 | 157
Bydlisko: KK/PP/BA
NapísalOffline : 05.10.2013 23:39 | [Python] Nacitanie retazca

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 | 149
Bydlisko: Houston, Texas
NapísalOffline : 06.10.2013 14:16 | [Python] Nacitanie retazca

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 | 157
Bydlisko: KK/PP/BA
Napísal autor témyOffline : 06.10.2013 15:09 | [Python] Nacitanie retazca

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 | 149
Bydlisko: Houston, Texas
NapísalOffline : 06.10.2013 15:29 | [Python] Nacitanie retazca

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 | 157
Bydlisko: KK/PP/BA
Napísal autor témyOffline : 06.10.2013 16:27 | [Python] Nacitanie retazca

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 | 157
Bydlisko: KK/PP/BA
Napísal autor témyOffline : 30.10.2013 7:35 | [Python] Nacitanie retazca

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 | 149
Bydlisko: Houston, Texas
NapísalOffline : 30.10.2013 7:51 | [Python] Nacitanie retazca

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 | 0
NapísalOffline : 30.10.2013 10:28 | [Python] Nacitanie retazca

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 | 157
Bydlisko: KK/PP/BA
Napísal autor témyOffline : 31.10.2013 0:47 | [Python] Nacitanie retazca

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
 [ Príspevkov: 9 ] 


[Python] Nacitanie retazca



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

438

16.04.2013 19:01

crawn

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

funkcia na doplnenie retazca do retazca

v PHP, ASP

3

443

06.07.2009 19:21

stenley

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

znak do retazca

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

3

395

15.11.2011 11:03

marian_r

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

Výťah časti reťazca

v PHP, ASP

6

499

10.05.2009 19:52

Denco1

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

8080 spracovanie retazca

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

1

692

07.01.2009 14:52

stopa27

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

nahradenie reťazca inym reťazcom

v PHP, ASP

3

595

02.12.2009 23:48

Supicek

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

Regulárne výrazy - negácia reťazca

v PHP, ASP

7

948

22.10.2007 20:39

juho

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

kontrola retazca vo formulari

v JavaScript, VBScript, Ajax

8

946

05.09.2007 14:23

juho

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

C - zistovanie pismena z retazca

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

7

603

05.12.2011 22:45

namorblade3

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

kontrola zadaneho retazca vo formulari

v PHP, ASP

5

607

29.08.2007 19:15

juho

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

vybratie urcitej casti retazca od zvoleneho znaku

v PHP, ASP

1

490

20.07.2009 15:21

Ďuri

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

Python

v Perl, Python, Ruby, CGI

12

957

02.07.2021 8:41

void

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

python

v Perl, Python, Ruby, CGI

1

775

19.12.2011 23:09

Ďuri

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

Python, program

v Perl, Python, Ruby, CGI

6

1125

02.07.2013 19:04

reDo

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

Python skusenosti

v Perl, Python, Ruby, CGI

19

1373

12.07.2013 23:36

phodinux

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

Python zoznam

v Perl, Python, Ruby, CGI

1

732

14.06.2013 21:35

reDo



© 2005 - 2025 PCforum, edited by JanoF