Diskuse:Python/Kenjiro995/Textové proměnné

Poslední komentář: před 1 rokem od uživatele Juandev v tématu „Self

count()

editovat

Tak sem si chtěl udělat výpočet pro hypotézu a nějak mě to s tím count nejde. Zde jo kód:

pocty_pismen_v_textu = "1 9 8 8 9 2 3 9 6 4 3 5 2 2 7 7 5 1 15 3 2 6 3 8 4 2 3 4 6. 1 4 7 9 2 8 9 5 8 4 2 2 3 9 1 10 7 4 2 8 5. 9 2 4 9 7 5 1 10 2 7 7 3. 3 2 2 7 5 5 4 3 6 4 5 4 8 8 4 2 2 6. 5 2 6 7 2 9 8 5 7 5 10 9 1 10 13 4 2 8 2 2 8 10 2. 10 6 6 1 9. 5 3 9 2 8 8 11 6 5 4 9 3 10 5 10 4 6. 7 10 9 2 2 8 9 9 6 1 10 2 5 3 4 7 7 1 7 10. 9 9 10 6 2 12 7 9 2 5 8 7 7. 6 4 10 7 2 10 11 11 7 6 9 1 10 7 2 7 10 10 4 8 5 6 4 1 7 4 8. 4 4 5 2 4 10 3 3 2 8 7 2 6 8 2 3 1 9 6 1 6 7 1 8 11. 4 12 3 3 2 11 1 14 8 2 2 5 10 10. 5 3 7 5 2 6 4 11 3 7 2 2 7 13 1 10 10 6 2 8. 9 6 4 5 4 2 8. 8 5 4 9 1 6 5 6 3 1 1 5 5. 5 1 11 8 6 6 7 1 10 1 7 11 5 2 7 2 8 1 14."

jedno_pismeno = (pocty_pismen_v_textu.count(" 1 "))
jedno_pismeno_b = (pocty_pismen_v_textu.count(" 1."))
dve_pismena = (pocty_pismen_v_textu.count(" 2 "))
dve_pismena_b = (pocty_pismen_v_textu.count(" 2."))
tri_pismena = (pocty_pismen_v_textu.count(" 3 "))
tri_pismena_b = (pocty_pismen_v_textu.count(" 3."))
ctyri_pismena = (pocty_pismen_v_textu.count(" 4 "))
ctyri_pismena_b = (pocty_pismen_v_textu.count(" 4."))

print("Slov o 4 písmenech: ", jedno_pismeno + jedno_pismeno_b + dve_pismena + dve_pismena_b + tri_pismena + tri_pismena_b + ctyri_pismena + ctyri_pismena_b)
print("Slov o 3 písmenech: ", jedno_pismeno + jedno_pismeno_b + dve_pismena + dve_pismena_b + tri_pismena + tri_pismena_b)

Jedná se o text, ve kterém každé číslo reprezentuje slovo a udává počet písmen v tomto slově. Každá věta je pak oddělena tečkou. Já chci spočítat, kolik je tam slov o jednom, dvou, třech a čtyřech slovech. Hledám tedy v celém řetězci výskyt subřetězce "_1_" a "_1.". Protože se domnívám, že se tak zbavím přičítání jedniček například z čísel 11, 10 apod. A tu jedničku ze začátku řetězce holt přičtu manuálně. Přesto mi to např. pro 4písmená slova nevychází, při manuálním spočítání jich najdu víc, než takhle. Co je špatně? Jediné co mne napadá, že někde není klasická mezera, ale jiný nepropsaný znak. Juandev (diskuse) 21. 9. 2023, 06:50 (UTC)Odpovědět

Mě to dává 101 4písmených a 74 3písmených, ale ve skutečnosti je tam 113 4písmených a 86 3písmených. Juandev (diskuse) 21. 9. 2023, 07:06 (UTC)Odpovědět
Tak už sem na to přišel. Ta funkce neumí počítat překrývající se výskyty. Takže sice ve slově "hello" to správně spočte, že jsou tam 2 l, ale v případě požadavku na výpočet "_2_" to má problém u zdvojených výskytů typu "_2_2_" a už je to nezahrne do výpočtu. Možná proto, že je to odvozené od řezání a jakoby to vyřízne ten první řetězec "_2_" a ten druhý to už nevidí, protože se z něj stane "2_" což neodpovídá požadavku hledání. V nápovědě je to popsáno jako Return the number of non-overlapping occurrences a tady se prostě překrývaj. Juandev (diskuse) 21. 9. 2023, 10:53 (UTC)Odpovědět

Self

editovat

Hele, nerozumim tomu self. Některý ty metody co uvádíš to mají v syntaxi, ale zatím sem nějak nepochopil jak se to používá a co to značí. Mě to přijde jako nějaký parametr, který odkazuje na sebe sama. Jen mi není jasný, proč je to potřeba a proč to někdy funguje i bez zadání self. Juandev (diskuse) 22. 9. 2023, 10:32 (UTC)Odpovědět

Zpět na stránku „Python/Kenjiro995/Textové proměnné“.