Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Autor | Správa |
---|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
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 |
|
Registrovaný: 20.03.08 Prihlásený: 08.03.17 Príspevky: 596 Témy: 149 | 149 Bydlisko: Houston, Texas |
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 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
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
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 |
|
Registrovaný: 20.03.08 Prihlásený: 08.03.17 Príspevky: 596 Témy: 149 | 149 Bydlisko: Houston, Texas |
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
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
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 |
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
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 |
|
Registrovaný: 20.03.08 Prihlásený: 08.03.17 Príspevky: 596 Témy: 149 | 149 Bydlisko: Houston, Texas |
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
|
|
Registrovaný: 13.11.07 Prihlásený: 20.08.16 Príspevky: 1702 Témy: 0 | 0 |
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
|
|
Registrovaný: 23.12.10 Prihlásený: 10.09.22 Príspevky: 1056 Témy: 157 | 157 Bydlisko: KK/PP/BA |
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 |
|
Stránka: 1 z 1
| [ Príspevkov: 9 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| v Assembler, C, C++, Pascal, Java | 0 | 438 | 16.04.2013 19:01 crawn | | v PHP, ASP | 3 | 443 | 06.07.2009 19:21 stenley | | v Assembler, C, C++, Pascal, Java | 3 | 395 | 15.11.2011 11:03 marian_r | | v PHP, ASP | 6 | 499 | 10.05.2009 19:52 Denco1 | | v Assembler, C, C++, Pascal, Java | 1 | 692 | 07.01.2009 14:52 stopa27 | | v PHP, ASP | 3 | 595 | 02.12.2009 23:48 Supicek | | v PHP, ASP | 7 | 948 | 22.10.2007 20:39 juho | | v JavaScript, VBScript, Ajax | 8 | 946 | 05.09.2007 14:23 juho | | v Assembler, C, C++, Pascal, Java | 7 | 603 | 05.12.2011 22:45 namorblade3 | | v PHP, ASP | 5 | 607 | 29.08.2007 19:15 juho | | v PHP, ASP | 1 | 490 | 20.07.2009 15:21 Ďuri | | v Perl, Python, Ruby, CGI | 12 | 957 | 02.07.2021 8:41 void | | v Perl, Python, Ruby, CGI | 1 | 775 | 19.12.2011 23:09 Ďuri | | v Perl, Python, Ruby, CGI | 6 | 1125 | 02.07.2013 19:04 reDo | | v Perl, Python, Ruby, CGI | 19 | 1373 | 12.07.2013 23:36 phodinux | | v Perl, Python, Ruby, CGI | 1 | 732 | 14.06.2013 21:35 reDo |
|