1 00:00:00,000 --> 00:00:04,821 V tomto videu vám chci představit cyklus "for". 2 00:00:04,836 --> 00:00:07,985 A udělám to tak, že si napíšeme malý program, 3 00:00:07,985 --> 00:00:10,374 který počítá faktoriál čísla. 4 00:00:10,374 --> 00:00:13,685 Zopakujeme si nejdřív, co faktoriál s čísly dělá. 5 00:00:13,685 --> 00:00:16,496 Co znamená třeba "1 faktoriál"? 6 00:00:16,496 --> 00:00:20,686 Většinou se to píše jako 1! 7 00:00:20,686 --> 00:00:23,698 V tomto případě se to prostě rovná 1. 8 00:00:23,698 --> 00:00:25,533 Když řeknete 2 faktoriál, 9 00:00:25,533 --> 00:00:28,843 bude se to rovnat 2 krát 1. 10 00:00:28,843 --> 00:00:31,846 Když řeknete 3 faktoriál, 11 00:00:31,846 --> 00:00:38,106 bude to 3 x 2 x 1, 12 00:00:38,106 --> 00:00:40,859 a to se rovná 6. 13 00:00:40,859 --> 00:00:43,130 Takže faktoriál nějakého čísla 14 00:00:43,130 --> 00:00:46,083 bude to dané číslo vynásobené všemi menšími čísly 15 00:00:46,083 --> 00:00:48,556 až do jedničky 16 00:00:49,069 --> 00:00:52,374 Pojďme implementovat náš program k výpočtu faktoriálu. 17 00:00:52,374 --> 00:00:53,989 A způsob, jakým to udělám, 18 00:00:53,989 --> 00:00:55,848 bude vložení od uživatele, 19 00:00:55,848 --> 00:00:57,108 Vyzve to uživatele 20 00:00:57,108 --> 00:00:59,552 k zadání čísla, jehož faktoriál chce vypočítat 21 00:00:59,552 --> 00:01:01,858 a potom to faktoriál vypočítá. 22 00:01:01,858 --> 00:01:03,058 A co udělám, 23 00:01:03,058 --> 00:01:06,844 použiji funkci, kterou nám poskytuje Python. 24 00:01:06,844 --> 00:01:09,706 A já v tomto videu používám Python 2. 25 00:01:09,706 --> 00:01:11,671 Vy byste to mohly udělat trochu odlišně - 26 00:01:11,671 --> 00:01:12,833 opravdu, budu o tom mluvit za chvíli - 27 00:01:12,833 --> 00:01:14,379 když používáte Python 3. 28 00:01:14,379 --> 00:01:15,364 Python 2 je to, 29 00:01:15,364 --> 00:01:18,039 v čem je prováděna většina implementací v Pythonu, 30 00:01:18,039 --> 00:01:19,546 v tomto videu. 31 00:01:19,546 --> 00:01:21,035 Ale venku už je Python 3, 32 00:01:21,035 --> 00:01:23,386 to je druh novější verze. 33 00:01:23,386 --> 00:01:26,999 Trochu to vyjasním v budoucím videu. 34 00:01:26,999 --> 00:01:30,395 Nicméně, budeme brát vložení od uživatele 35 00:01:30,395 --> 00:01:32,036 a jdeme vyzvat zprávou. 36 00:01:32,036 --> 00:01:33,013 Řekneme mu 37 00:01:33,013 --> 00:01:44,375 "Vložte kladné číslo, abyste získali jeho faktoriál." 38 00:01:44,375 --> 00:01:45,334 A takže 39 00:01:45,334 --> 00:01:47,540 seznámíme se s funkcí. 40 00:01:47,540 --> 00:01:49,545 Vložíme do funkce argument. 41 00:01:49,545 --> 00:01:52,042 A argument, který vložíme do funkce, 42 00:01:52,042 --> 00:01:55,733 do vkládací funkce přímo zde - je řetězec. 43 00:01:55,733 --> 00:01:58,025 a "string" (řetězec) zní jako velmi komplikovaná "thing" (věc), 44 00:01:58,025 --> 00:02:00,020 ale opravdu je to pouze řetězec znaků. 45 00:02:00,020 --> 00:02:01,800 Můžete jej vidět jako houf znaků. 46 00:02:01,800 --> 00:02:04,036 To představí tento text uživateli, 47 00:02:04,036 --> 00:02:05,708 a poskytne mu to malé vkládací pole. 48 00:02:05,708 --> 00:02:07,733 A uživatel do toho pole něco napíše. 49 00:02:07,733 --> 00:02:10,008 Vyhodnotí to, co je ve vkládacím poli 50 00:02:10,008 --> 00:02:12,010 a potom, můžete se na to buď podívat, 51 00:02:12,010 --> 00:02:14,692 že to odkazuje na proměnnou, 52 00:02:14,692 --> 00:02:16,666 nebo vložit do proměnné číslo, 53 00:02:16,666 --> 00:02:20,664 v závislosti na tom, jak si chcete proměnnou představit. 54 00:02:20,664 --> 00:02:24,677 Pokud používáte Python 3, 55 00:02:24,677 --> 00:02:26,684 zavoláte "eval" (hodnotu), 56 00:02:26,684 --> 00:02:29,022 která vrátí hodnotu této funkce. 57 00:02:29,022 --> 00:02:30,667 To je když používáte Python 3. 58 00:02:30,667 --> 00:02:32,602 Já právě teď používám Python 2. 59 00:02:32,602 --> 00:02:36,086 A jestli chcete dělat přesně to, co dělám já, 60 00:02:36,086 --> 00:02:39,015 já používám PyScripter IDE - 61 00:02:39,015 --> 00:02:41,003 Integrated Development Environment (vývojářské prostředí). 62 00:02:41,003 --> 00:02:43,929 To je volně dostupný open-source projekt na počítač. 63 00:02:43,929 --> 00:02:46,369 Ale je tu mnoho, mnoho způsobů jak můžete editovat Python. 64 00:02:46,369 --> 00:02:49,672 Můžete to dělat klidně v jakémkoliv textovém editoru. 65 00:02:49,672 --> 00:02:53,669 Takže, zatím vše co jsme udělali je, že jsme vzali vloženou hodnotu od uživatele 66 00:02:53,669 --> 00:02:56,025 a dali jsme ji do proměnné. 67 00:02:56,025 --> 00:02:57,338 To, co je na Pythonu opravdu fajn je, 68 00:02:57,338 --> 00:02:59,343 že můžeme tento program nechat běžet 69 00:02:59,343 --> 00:03:00,377 a prostě sledovat, co se stane. 70 00:03:00,377 --> 00:03:01,626 Tak to pojďme udělat. 71 00:03:01,626 --> 00:03:04,159 Uložit to a jdu ho spustit. 72 00:03:04,159 --> 00:03:06,826 Toto malé tlačítko "play" běží v tomto IDE. 73 00:03:06,826 --> 00:03:09,648 A jak jsme říkali, navádí to uživatele: 74 00:03:09,648 --> 00:03:12,067 "Vložte kladné číslo, abyste získali jeho faktoriál." 75 00:03:12,067 --> 00:03:14,190 Takže nevím - napíšu 10. 76 00:03:14,190 --> 00:03:17,388 A klikám OK. Nic se nestalo. 77 00:03:17,388 --> 00:03:18,510 Jasně, samozřejmě se nic nestalo, 78 00:03:18,510 --> 00:03:20,832 protože já jsem opravdu neurčil nic, co by se mělo stát. 79 00:03:20,832 --> 00:03:23,523 Ale když jsme napsali číslo, 80 00:03:23,523 --> 00:03:26,013 uvidíme, že je teď zadaná 10. 81 00:03:26,013 --> 00:03:28,395 Proměnná teď odkazuje na číslo 10. 82 00:03:28,395 --> 00:03:32,988 Takže teď můžeme použít toto číslo a vypočítat jeho faktoriál. 83 00:03:32,988 --> 00:03:34,013 Takže co udělám - 84 00:03:34,013 --> 00:03:36,006 a jdeme to udělat opětovně - 85 00:03:36,006 --> 00:03:37,029 povíme si více o tom, 86 00:03:37,029 --> 00:03:38,987 co se stane v budoucnosti. 87 00:03:38,987 --> 00:03:41,867 Takže já definuji další proměnnou pojmenovanou "product". 88 00:03:41,867 --> 00:03:44,073 Nastavím "product" na 1. 89 00:03:44,073 --> 00:03:45,534 Co uděláme je to, 90 00:03:45,534 --> 00:03:49,839 že začneme od 1 nahoru k jakémukoliv číslu 91 00:03:49,839 --> 00:03:51,710 a zachováme násobení productu 92 00:03:51,710 --> 00:03:54,701 každým postupně větším číslem. 93 00:03:54,701 --> 00:03:56,215 Takže jdeme začít. 94 00:03:56,215 --> 00:03:59,148 Takže zadám tady cyklus "for". 95 00:03:59,148 --> 00:04:01,867 V dalším videu to krok po kroku vysvětlím, 96 00:04:01,867 --> 00:04:04,010 co přesně cyklus "for" dělá. 97 00:04:04,010 --> 00:04:05,215 Snažíme se - kromě cyklu "for" - 98 00:04:05,215 --> 00:04:07,526 snažíme se definovat proměnnou i. 99 00:04:07,526 --> 00:04:10,467 To je klasická proměnná definovaná v cyklu "for". 100 00:04:10,467 --> 00:04:11,856 A tato proměnná bude 101 00:04:11,856 --> 00:04:14,859 udržovat inkrementaci (přičítání 1) k vyšším a vyšším hodnotám. 102 00:04:14,859 --> 00:04:16,014 přes které půjdeme. 103 00:04:16,014 --> 00:04:19,168 Takže "for i in range" (proměnná i v rozsahu cyklu). 104 00:04:19,168 --> 00:04:21,682 A cyklus "for" je v Pythonu trochu odlišný než 105 00:04:21,682 --> 00:04:23,334 když jste dělali v Javascriptu nebo Javě. 106 00:04:23,334 --> 00:04:25,487 Udělám další video, ve kterém si to vysvětlíme. 107 00:04:25,487 --> 00:04:27,800 Ale "range of number" (rozsah čísel) - 108 00:04:27,800 --> 00:04:30,420 a k porozumění tomu, co je rozsah čísel, 109 00:04:30,420 --> 00:04:34,000 poskytuje seznam čísel od 0 110 00:04:34,000 --> 00:04:36,200 až k o 1 menšímu číslu než je toto. 111 00:04:36,200 --> 00:04:38,394 Takže zde jsme již definovali, co je to za číslo, 112 00:04:38,394 --> 00:04:39,385 je to číslo 10. 113 00:04:39,385 --> 00:04:43,208 Takže když napíšu v rozsahu 10 - nebo mě nechtě dělat řadu čísel. 114 00:04:43,208 --> 00:04:46,674 To mi dá seznam od 0 do 9 115 00:04:46,674 --> 00:04:48,467 - ta je o 1 menší než 10. 116 00:04:48,467 --> 00:04:51,271 A to je to stejné jako "range of 10" (rozsah 10). 117 00:04:51,271 --> 00:04:53,348 A co tento cyklus "for" dělá je, 118 00:04:53,348 --> 00:04:57,009 že přiřadí toto "i" každému členu pořadí. 119 00:04:57,009 --> 00:04:59,392 Začne s 0 - nebo každým členem z tohoto seznamu. 120 00:04:59,392 --> 00:05:01,845 Začne s 0 a potom udělá 121 00:05:01,845 --> 00:05:05,005 cokoliv, co mu řekneš, aby udělal, v cyklu "for", když je "i" rovno 0, 122 00:05:05,005 --> 00:05:07,665 potom to přiřadí "i" hodnotu 1. 123 00:05:07,665 --> 00:05:11,226 Pardon. Na začátku bude "i" 0, potom se bude rovnat 1, 124 00:05:11,226 --> 00:05:14,482 potom se bude rovnat 2, potom 3 - a tak dále - 125 00:05:14,482 --> 00:05:18,810 pořád dokud budeš chtít, pořád napříč seznamem čísel. 126 00:05:18,810 --> 00:05:24,839 A takže co tady chceme udělat je - 127 00:05:24,839 --> 00:05:27,699 kromě cyklu "for" 128 00:05:27,699 --> 00:05:29,985 chceme znovu definovat product, 129 00:05:29,985 --> 00:05:33,863 tak, aby se rovna productu (předchozímu productu). 130 00:05:33,863 --> 00:05:39,194 Takže náš nový product bude náš starý product 131 00:05:39,194 --> 00:05:44,054 a já ho vynásobím i + 1. 132 00:05:44,054 --> 00:05:46,400 Budeme to opatrně procházet dále ve videu. 133 00:05:46,400 --> 00:05:48,485 Ale já chci, abyste přemýšleli o tom, co už je uděláno. 134 00:05:48,485 --> 00:05:49,678 Dobře, když začneme, 135 00:05:49,678 --> 00:05:53,988 řekněme, že číslo končí jako 3. 136 00:05:53,988 --> 00:05:55,529 Takže product nastavíme jako 1. 137 00:05:55,529 --> 00:05:57,634 A řekneme "for i in range". 138 00:05:57,634 --> 00:06:02,185 Potom, když děláme "range of 3", 139 00:06:02,185 --> 00:06:04,538 prvně bude "i" nula. 140 00:06:04,538 --> 00:06:05,691 A vezmeme... 141 00:06:05,691 --> 00:06:08,987 náš starý product - takže 1 - vynásobíme ho i + 1. 142 00:06:08,987 --> 00:06:12,067 Dobře i je nula, takže 0 + 1 je 1. 143 00:06:12,067 --> 00:06:14,715 Tak to bude 1 x 1, což bude 1. 144 00:06:14,715 --> 00:06:17,789 Potom bude mít "i" hodnotu 1. 145 00:06:17,789 --> 00:06:19,368 To je to, co dělá cyklus "for". 146 00:06:19,368 --> 00:06:21,389 Opakuje. Udržuje inkrementaci (zvyšování). 147 00:06:21,389 --> 00:06:22,830 Dobře, ne vždycky dělá inkrementaci. 148 00:06:22,830 --> 00:06:24,697 Prostě udržuje změnu hodnoty proměnné "i", 149 00:06:24,697 --> 00:06:26,974 když jde napříč seznamem hodnot. 150 00:06:26,974 --> 00:06:29,190 A takže dále je náš product 1. 151 00:06:29,190 --> 00:06:34,577 Ale teď je 1, takže 1 + 1 = 2, vynásobeno 1 je 2. 152 00:06:34,577 --> 00:06:37,084 A potom - potom bude hodnota nastavena na 2. 153 00:06:37,084 --> 00:06:38,687 Takže to bude 2 + 1 ... 154 00:06:38,687 --> 00:06:42,523 vynásobeno tím, jako hodnotu měl produkt od minulého opakování - to bylo 2. 155 00:06:42,523 --> 00:06:46,359 A takže to bude 2 x 3 a to je 6. 156 00:06:46,359 --> 00:06:49,386 A když jsme to nakonec udělali s tímto cyklem "for" 157 00:06:49,386 --> 00:06:51,190 uvnitř productu - 158 00:06:51,190 --> 00:06:54,390 nebo hádám, že jsme řekli, že product bude odkazovat na 159 00:06:54,390 --> 00:06:57,467 aktuální faktoriál vloženého čísla. 160 00:06:57,467 --> 00:07:00,733 Tak teď můžeme říct "print product" (vypiš product). 161 00:07:00,733 --> 00:07:03,856 A v Pythonu - v tomto zdejším případě - 162 00:07:03,856 --> 00:07:07,379 interpret ví, jak zastavit cyklus "for" 163 00:07:07,379 --> 00:07:10,053 když běží, k určení "i". 164 00:07:10,053 --> 00:07:12,342 Takže to je důvod proč to neběží donekonečna. 165 00:07:12,342 --> 00:07:17,325 Takže, pojďme se podívat, co jsme udělali. 166 00:07:17,325 --> 00:07:19,322 Podívejme se, jestli to skutečně funguje. 167 00:07:19,322 --> 00:07:22,696 Podívejme - skutečně - vypíše toto. 168 00:07:22,696 --> 00:07:25,551 Pojďme se podívat, jestli tato věc skutečně funguje. 169 00:07:25,551 --> 00:07:29,667 Takže uložím to. A potom to pustím. 170 00:07:29,667 --> 00:07:31,164 A požaduje to po mně: 171 00:07:31,164 --> 00:07:33,378 "Vložte kladné číslo, abyste získali jeho faktoriál." 172 00:07:33,378 --> 00:07:35,622 Takže zkusme to s 3. - Enter. 173 00:07:35,622 --> 00:07:37,200 To mi dá správnou odpověď. 174 00:07:37,200 --> 00:07:40,266 Zkusme to znovu. 175 00:07:40,266 --> 00:07:44,230 Takže, "Vložte kladné číslo, abyste získali jeho faktoriál." 176 00:07:44,230 --> 00:07:47,067 Nevím, zkusme něco většího: 10. 177 00:07:47,067 --> 00:07:50,668 Funguje to. Předpokládám, že si to můžete sami ověřit. 178 00:07:50,668 --> 00:07:52,513 Takže co jsme udělali je to, že jsme napsali velmi jednoduchý program. 179 00:07:52,513 --> 00:07:53,641 Ale dělá něco opravdu pěkného - 180 00:07:53,641 --> 00:07:55,964 vypočítá faktoriál libovolného čísla. 181 00:07:55,964 --> 00:07:56,979 V dalším videu 182 00:07:56,979 --> 00:07:59,222 se podíváme mnohem více podrobněji, 183 00:07:59,222 --> 00:08:02,650 způsobem, který vás zmate - co dělá cyklus "for". 184 00:08:02,650 --> 00:08:05,364 Takže, držte se se mnou i v dalším videu a sledujte to. 185 00:08:05,364 --> 00:08:09,123 Má to trochu více opatrné vysvětlení.