Ahoj, funguje vam prosim tento kod, me ani z prikazove radky.
Omlouvam se , vkladam znovu jelikoz mi v jinem vlakne nesel vlozit prispevek.
kod:
<code>
SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
def approximate_size(size, a_kilobyte_is_1024_bytes=True):
'''
Convert a file size to human-readable form.
Keyword arguments:
size -- file size in bytes
a_kilobyte_is_1024_bytes -- if True (default), use multiples of 1024
if False, use multiples of 1000
Returns: string
'''
if size < 0:
raise ValueError('number must be non-negative')
multiple = 1024 if a_kilobyte_is_1024_bytes else 1000
for suffix in SUFFIXES[multiple]:
size /= multiple
if size < multiple:
return '{0:.1f} {1}'.format(size, suffix)
raise ValueError('number too large')
if __name__ == '__main__':
print(approximate_size(1000000000000, False))
print(approximate_size(1000000000000))
</code>
Nefukcni kod, python
Re: Nefukcni kod, python
Tak za prvé, programátoři odsazující mezerami jsou lépe placení než ti, kteří odsazují tabulátorem. Zjistila to statistika, příčina je neznámá, prostě to tak je a nikdo neví proč.
A za druhé, nikdy, ale opravdu NIKDY nepoužívej v Pythonu tabulátor, protože se z toho velice rychle zblázníš! Leda že bys dokázal program v jazyce Whitespace napsat na papír a po roce bezchybně opsat do počítače
Takže po nahrazení tabulátorů mezerami a správném odsazení mi to funguje naprosto bezchybně:
A za druhé, nikdy, ale opravdu NIKDY nepoužívej v Pythonu tabulátor, protože se z toho velice rychle zblázníš! Leda že bys dokázal program v jazyce Whitespace napsat na papír a po roce bezchybně opsat do počítače
Takže po nahrazení tabulátorů mezerami a správném odsazení mi to funguje naprosto bezchybně:
Kód: Vybrat vše
#! /usr/bin/python
SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']}
def approximate_size(size, a_kilobyte_is_1024_bytes=True):
'''
Convert a file size to human-readable form.
Keyword arguments:
size -- file size in bytes
a_kilobyte_is_1024_bytes -- if True (default), use multiples of 1024
if False, use multiples of 1000
Returns: string
'''
if size < 0:
raise ValueError('number must be non-negative')
multiple = 1024 if a_kilobyte_is_1024_bytes else 1000
for suffix in SUFFIXES[multiple]:
size /= multiple
if size < multiple:
return '{0:.1f} {1}'.format(size, suffix)
raise ValueError('number too large')
if __name__ == '__main__':
print(approximate_size(1000000000000, False))
print(approximate_size(1000000000000))
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Nefukcni kod, python
Děkuju, fakt že jo, máš pravdu. Tak sem zase o neco chytřejší.
Dodatečně přidáno po 14 minutách 33 vteřinách:
Sem asi LAMA , ale jak ten program ví, že to ma převest na 1 TB a 1 GiB
Dodatečně přidáno po 14 minutách 33 vteřinách:
Sem asi LAMA , ale jak ten program ví, že to ma převest na 1 TB a 1 GiB
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Nefukcni kod, python
Deli vstupni cislo tisicem dokud je vstupni cislo vyssi nez tisic. Podle toho kolikrat se delilo vybere prislusnou koncovku.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Nefukcni kod, python
Je dobré nevymýšlet nějaká neviditelná kouzla, ale všechno podstatné mít pěkně pohromadě už v hlavičce funkce. Tam se předávají parametry, které řídí její chování. Podstatné části v překladu do lidského jazyka:
Pokud zavoláš tu funkci s jedním parametrem - zadaným číslem, počítá se binárně s násobky 1024 a počítačovými jednotkami *iB z druhého řádku tabulky. Když jí ale druhým parametrem řekneš že je nechceš - False, použijí se lidské metrické násobky 1000 a jednotky *B z prvního řádku. Ale kdybys do druhého parametru dal True, jako že ty binární násobky určitě chceš, bude se také počítat s 1024.
No a potom to zadané číslo v cyklu tím násobkem dělíš tak dlouho, dokud nemáš číslo menší než ten násobek, a pak ho přímo z cyklu vrátíš jako string i s příslušnou příponou z tabulky. Pokud tabulka nestačila, cyklus skončí bez výsledku a z funkce vrátíš chybové hlášení.
def approximate_size(size, binárně=Ano):
...
multiple = 1024 if binárně else 1000
...
Pokud zavoláš tu funkci s jedním parametrem - zadaným číslem, počítá se binárně s násobky 1024 a počítačovými jednotkami *iB z druhého řádku tabulky. Když jí ale druhým parametrem řekneš že je nechceš - False, použijí se lidské metrické násobky 1000 a jednotky *B z prvního řádku. Ale kdybys do druhého parametru dal True, jako že ty binární násobky určitě chceš, bude se také počítat s 1024.
No a potom to zadané číslo v cyklu tím násobkem dělíš tak dlouho, dokud nemáš číslo menší než ten násobek, a pak ho přímo z cyklu vrátíš jako string i s příslušnou příponou z tabulky. Pokud tabulka nestačila, cyklus skončí bez výsledku a z funkce vrátíš chybové hlášení.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Nefukcni kod, python
"NIKDY nepoužívej v Pythonu tabulátor", aha Tak to jo. A když máš dodržovat PEP8, tak co?
Re: Nefukcni kod, python
No, například "profesionály" opovrhovaný Midnight Editor v Midnight Commanderu má v nastavení položku "Převést tabulátor na mezery" i s hodnotou o kolik mezer se má odsazovat. Do inteligentních editorů, jako je Vim nebo Emacs, si můžeš doplnit libovolnou funkcionalitu sám. Ale pokud musíš z libovolného důvodu místo dávno funkčních řešení používat nějaký neschopný frikulínský crippleware, tak holt usouložíš mezerník
Mimochodem, automatické odsazování, nahrazení tabulátoru mezerami okamžitě jak ho stisknu i backspace rovnou na předchozí úroveň jsem si vychutnával už v QBasicu z roku 1990 v MS-DOSu, takže mi není jasné proč tyhle věci, naprosto samozřejmé už dávno v minulém tisíciletí, dnes samozřejmé nejsou!
Mimochodem, automatické odsazování, nahrazení tabulátoru mezerami okamžitě jak ho stisknu i backspace rovnou na předchozí úroveň jsem si vychutnával už v QBasicu z roku 1990 v MS-DOSu, takže mi není jasné proč tyhle věci, naprosto samozřejmé už dávno v minulém tisíciletí, dnes samozřejmé nejsou!
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Nefukcni kod, python
Pouzivej si odsazeni jaky chces, ale musis ho dodrzet, coz tazatel asi nedokaze.
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
Re: Nefukcni kod, python
Však je to první program v té učebnici, až si párkrát otluče klouby, naučí se
Ono to tak bývá, když jsem kdysi opisoval do osmibitu prográmky z časopisů, také jsem jako první věc musel řešit proč mi nefungují. A je to dobrá škola.
Ono to tak bývá, když jsem kdysi opisoval do osmibitu prográmky z časopisů, také jsem jako první věc musel řešit proč mi nefungují. A je to dobrá škola.
"Král Lávra má dlouhé oslí uši, král je ušatec!
(pravil K. H. Borovský o cenzuře internetu)
(pravil K. H. Borovský o cenzuře internetu)
Re: Nefukcni kod, python
Mě to přeci jen nedá, v učebnicích jsem viděl maximálně tak for i in boxes [2:], ale tady je:
for suffix in SUFFIXES[multiple]: pres tu promennou multiple odkazuje nen slovnik SUFFIXES nebo jak to brat. V modelovych prikladech sem fakt tohle nikde nanasel, diky Děli se tam jak 1000cem tak i 1024kou, je to tak ?
for suffix in SUFFIXES[multiple]: pres tu promennou multiple odkazuje nen slovnik SUFFIXES nebo jak to brat. V modelovych prikladech sem fakt tohle nikde nanasel, diky Děli se tam jak 1000cem tak i 1024kou, je to tak ?
Re: Nefukcni kod, python
syntaxi v Pythonu moc neznám.. ale v čem ti přijde ten zápis jinej ? suffix=i, SUFFIXES=boxes a za multiple se dosadí buď 1000 nebo 1024
dělí se BUĎ 1000 NEBO 1024, podle toho vstupního parametru
dělí se BUĎ 1000 NEBO 1024, podle toho vstupního parametru
- CZechBoY
- Master Level 9.5
- Příspěvky: 8813
- Registrován: srpen 08
- Bydliště: Brno
- Pohlaví:
- Stav:
Offline
- Kontakt:
Re: Nefukcni kod, python
jo, vezmeš si ze slovníku příslušnou hodnotu takovou která odpovídá klíči který je uložený v proměnné multiple
tzn když máš
SUFFIXES = {1000: "KB", 1024: "KiB"}
a zavoláš SUFFIXES[1000] tak se ti vrátí "KB"
a když zavoláš SUFFIXES[1024] tak se vrátí "KiB"
tzn když máš
SUFFIXES = {1000: "KB", 1024: "KiB"}
a zavoláš SUFFIXES[1000] tak se ti vrátí "KB"
a když zavoláš SUFFIXES[1024] tak se vrátí "KiB"
PHP, Nette, MySQL, C#, TypeScript, Python
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
IntelliJ Idea, Docker, Opera browser, Linux Mint
iPhone XS
Raspberry PI 3 (KODI, Raspbian)
XBox One S, PS 4, nVidia GeForce NOW
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
- 9
- 1362
-
od mmmartin
Zobrazit poslední příspěvek
29 srp 2023 16:47
Zpět na “Programování a tvorba webu”
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů